【发布时间】:2011-11-28 13:21:10
【问题描述】:
在我的网页上,我有一个打开模态 jQuery 对话框的按钮。单击按钮时运行的代码如下:
$('#main-onoffline-container').append('<div id="dialog-modal-a"></div>');
$("#dialog-modal-a").dialog({
title:'Add Tags'
, autoOpen: false
, modal: true
, height: 540
, width:700
, close: function (ev, ui) { alert('closing'); }
,open: function() {
$("#dialog-modal-a").html('Some html will go here')
}
});
$("#dialog-modal-a").dialog("open");
如你所见,我正在向 DOM 添加一个 div,然后针对新添加的 div 调用对话框方法。
对话框可以正常打开并显示 html 和 X 关闭按钮。但是,当我点击 X 按钮关闭对话框时,它并没有关闭。控制台显示来自 jquery-1.6.4.min.js 的以下错误:
Uncaught RangeError: Maximum call stack size exceeded
谁知道问题出在哪里?
更新: 经过长时间的会话后,我发现某些 js 库的顺序正在影响这一点:
如果我按如下方式包含文件,则会出现问题:
<script src="../../Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.7.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
如果我按如下方式包含文件,那么问题就会消失:
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.7.min.js" type="text/javascript"></script>
这看起来很奇怪 - 我认为您应该在文件顶部包含核心 jQuery 内容?
(验证库是 Jörn Zaefferer 插件)
我提出了一个不同的问题来推进这一点:jQuery library include order causes error
【问题讨论】:
-
这是您在该页面上的唯一代码吗?这可能与此无关,看起来浏览器不知何故内存不足。
-
我在页面上运行了大量其他代码,其中创建和操作了许多 Javascript 对象。然而,直到此刻,没有任何东西导致出现任何控制台错误。
-
如果你把这段代码拿出来,一切还好吗?我之所以这么说是因为当前代码在这个小提琴jsfiddle.net/BHaEj/13 中运行良好
-
嗯,拆掉这个功能有点棘手。我会看看我是否可以创建一个 jsfiddle 提取...
-
打开对话框的代码是什么?