【发布时间】:2011-12-01 07:22:40
【问题描述】:
我在 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 更大。
【问题讨论】:
-
你确定 foo 函数不递归吗?如果您删除该函数调用,错误仍然会发生吗?
-
它在其他浏览器中是否按预期工作?注释
foo($('#docId').val(), $(this).attr('id'));行时是否会出现此错误? -- 额外的性能提示:缓存选择器的结果 - 例如将$(this)的结果保存在变量中,然后根据需要在处理程序中使用它。 -
我有类似的问题,但需要 mouseenter 事件。使用 body 或 table 时,我没有得到足够的事件。
标签: javascript jquery google-chrome webkit stack-overflow