Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery绑定('click')产生范围错误_Javascript_Jquery_Jquery Ui - Fatal编程技术网

Javascript jQuery绑定('click')产生范围错误

Javascript jQuery绑定('click')产生范围错误,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我们有一个按钮,单击该按钮时,会启动这样一个事件: buttonElement.click(function (e) { }); 单击此按钮时,会产生一个奇怪的错误: 未捕获范围错误:超过最大调用堆栈大小 我已将错误隔离到jQuery的makeArray方法,该方法试图将包含310977个元素的数组传递给results.push方法,如下所示: 我知道这可能是一个问题,因为您可以尝试推送到数组上的元素的数量必然会有限制,但是我的问题是,为什么会首先发生此错误?在遍历堆栈时,我发现我们停在下面

我们有一个按钮,单击该按钮时,会启动这样一个事件:

buttonElement.click(function (e) {  });
单击此按钮时,会产生一个奇怪的错误:

未捕获范围错误:超过最大调用堆栈大小

我已将错误隔离到jQuery的makeArray方法,该方法试图将包含310977个元素的数组传递给results.push方法,如下所示:

我知道这可能是一个问题,因为您可以尝试推送到数组上的元素的数量必然会有限制,但是我的问题是,为什么会首先发生此错误?在遍历堆栈时,我发现我们停在下面的jQuery UI函数处:

其中this.options.handle设置为false,this.element表示单个元素。因此,这与调用jQueryfalse“modalDialog.find'*'相同。不确定第一个参数在那里做了什么,但是如果我们试图找到modalDialog的所有子节点,我们将找到大约86个节点,而不是它以某种方式找到的310977个元素


有人知道是什么导致了错误吗?我应该做些不同的事情吗?仅供参考,我们正在使用jQuery v1.3.2和jQuery UI 1.6rc6。

只需使用事件委派,而不是尝试将事件绑定到每个元素。对于1.3.2版,您需要使用.live。将事件绑定到单个元素是非常费力的

您可能希望执行以下操作:

$('#modalDialog').live('click', function(e) {});

客户端和捕获modalDialog元素中发生的点击事件将不会太麻烦。

您升级到jQuery版本不到6年的可能性有多大?什么@NathanTaylor,将jQuery更新到1.11或更高版本,然后回答一个问题是的,@NathanTaylor,我完全同意。这是摆在桌面上的一个可能的解决方案,但是我们的项目是巨大的,并且需要进行认真的测试来转移。尽管它是jQuery的旧版本,但问题不在这里。问题很可能出现在您自己调用jQuery的代码中。与使用无效url调用jQuerysAjax方法非常相似,当问题是您自己的代码时,jQuery会返回错误。也就是说,您可以发布调用jQuery的代码吗?请发布相关代码,这可能是由递归引起的问题。在数组中插入310977元素应该不会产生问题。谢谢@Chris,我尝试使用live,但遇到了相同的错误。我认为这不是jQuery的问题,而是发送给jQuery的内容。无论您选择什么,都会找到成千上万的jquery元素。执行$'modalDialog'应该只获取一个元素。除非对正在使用的jQuery源代码进行了修改。