这就是我在做的事情: 我有一个手风琴,我需要能够在一个可编辑的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" );
}
});
从我的理解,它的这两个函数递归地相互调用,从而导致堆栈溢出但是我似乎找不到解决问题的任何替代方法,即删除递归。 任何帮助表示赞赏。
答案 0 :(得分:0)
原来这是导致递归的对话框的close
方法!我很傻!