Как предотвратить переполнение стека javascript на jQuery dropble?
Вот что я делаю: у меня есть аккордеон, из которого мне нужно иметь возможность перетаскивать элемент li в редактируемом элементе div, и после удаления мне нужно открыть диалоговое окно, в котором есть некоторые дополнительные параметры, которые при выборе нужно быть добавлен к исходному элементу li.
Вот как выглядит скрипт:
jQuery("#formula").droppable({
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
accept: ":not(.ui-sortable-helper)",
drop: function (event, ui)
{
/* Popup logic */
symbolicKey = ui.draggable.attr('title');
symbolicId = ui.draggable.attr('id');
var res = symbolicId.split(".");
if(res[0] == "customIndex")
{
jQuery("#periodOnly").dialog("open");
}
else
{
jQuery(this).find(".placeholder").remove();
jQuery("<span class='vt' id=" + symbolicId + " contenteditable=false></span>").text("[" + symbolicKey + "]").appendTo(this);
}
}
});
jQuery("#periodOnly").dialog({
autoOpen: false,
modal: true,
buttons: {
"OK": function()
{
var period = $('select[property="customPeriod"]').val();
symbolicId = symbolicId + "."+period;
symbolicKey = symbolicKey + "."+period;
jQuery("#formula").find(".placeholder").remove();
jQuery("<span class='vt' id=" + symbolicId + " contenteditable=false></span>").text("[" + symbolicKey + "]").appendTo("#formula");
$( this ).dialog( "close" );
},
Cancel: function() {
$( this ).dialog( "close" );
}
},
close: function() {
$( this ).dialog( "close" );
}
});
Насколько я понимаю, это две эти функции, которые рекурсивно вызывают друг друга и, таким образом, вызывают переполнение стека, однако я не могу найти какой-либо альтернативы решению проблемы, то есть удаления рекурсии. Любая помощь приветствуется.
1 ответ
Решение
Оказывается, это было close
метод для диалогового окна, которое вызывало рекурсию! Глупо с моей стороны!