如何防止jQuery droppable上的javascript Stack Overflow?

时间:2014-02-03 21:27:40

标签: javascript jquery recursion stack-overflow

这就是我在做的事情: 我有一个手风琴,我需要能够在一个可编辑的div中拖放一个li元素,然后我需要打开一个对话框,其中有一些额外的选项,在选择时需要附加到原来的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 个答案:

答案 0 :(得分:0)

原来这是导致递归的对话框的close方法!我很傻!