Как предотвратить переполнение стека 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 метод для диалогового окна, которое вызывало рекурсию! Глупо с моей стороны!

Другие вопросы по тегам