我在Chrome上收到错误消息“未捕获RangeError:超出最大调用堆栈大小”。这是我的jQuery函数
$('td').click(function () {
if ($(this).context.id != null && $(this).context.id != '') {
foo($('#docId').val(), $(this).attr('id'));
}
return false;
});
请注意,页面中有成千上万个单元格。但是,我通常将堆栈溢出与递归相关联,在这种情况下,据我所知没有。
创建像这样的lambda是否会自动在堆栈上产生大量负载?有什么办法吗?
目前,我唯一的解决方法是在渲染HTML时在每个单元格上显式生成onclick事件,这会使HTML更大。
2
您确定foo函数不会递归吗?如果删除该函数调用,是否还会发生错误?
—
某物
是否可以在其他浏览器中正常工作?您在注释行时会发生此错误
—
WTK
foo($('#docId').val(), $(this).attr('id'));
吗?-额外的性能提示:缓存选择器的结果-例如将结果保留$(this)
在变量中,然后根据需要在处理程序中使用它。
我有一个类似的问题,但需要mouseenter事件。使用正文或表格时,我没有得到足够的事件。
—
ericslaw