Chrome / jQuery未捕获RangeError:超出最大调用堆栈大小

我在chrome上收到错误“Uncaught RangeError:Maximum call stack size exceeded”。 这里是我的jQuery函数

$('td').click(function () {
        if ($(this).context.id != null && $(this).context.id != '') {
            foo($('#docId').val(), $(this).attr('id'));
        }
        return false;
    });

请注意,页面中有成千上万的单元格。 但是,我通常会将堆栈溢出与递归联系起来,并且在这种情况下,据我所见,没有任何溢出。

像这样创建一个lambda会自动生成一堆堆栈中的东西吗? 有没有办法绕过它?

目前唯一的解决方法是在呈现HTML时在每个单元格上显式生成onclick事件,这使得HTML变得更大。


由于“页面中有数以万计的单元格”将点击事件绑定到每个单元格会导致可怕的性能问题。 有一种更好的方法可以做到这一点,即将点击事件绑定到主体,然后查明单元元素是否是点击的目标。 喜欢这个:

$('body').click(function(e){
       var Elem = e.target;
       if (Elem.nodeName=='td'){
           //.... your business goes here....
           // remember to replace $(this) with $(Elem)
       }
})

这种方法不仅可以用本地“td”标签完成你的任务,而且可以在后面添加“td”。 我想你会对这篇关于事件绑定和委托的文章感兴趣


或者你可以简单地使用jQuery的“.on()”方法,效果相同:

$('body').on('click', 'td', function(){
        ...
});

当你有一个无限循环时,你也可以得到这个错误。 确保你没有任何无限的,递归的自引用。


我更是一个错误,发生了什么是循环点击(我猜)基本上通过点击登录父母也被点击,最终导致超过最大调用堆栈大小。

$('.clickhere').click(function(){
   $('.login').click();
});

<li class="clickhere">
  <a href="#" class="login">login</a>
</li>
链接地址: http://www.djcxy.com/p/80235.html

上一篇: Chrome/jQuery Uncaught RangeError: Maximum call stack size exceeded

下一篇: Uncaught RangeError: Maximum call stack size exceeded