我在chrome上收到錯誤「Uncaught RangeError:Maximum call stack size exceeded」。這裏是我的jQuery功能Chrome/jQuery未捕獲RangeError:超出最大調用堆棧大小
$('td').click(function() {
if ($(this).context.id != null && $(this).context.id != '') {
foo($('#docId').val(), $(this).attr('id'));
}
return false;
});
請注意,頁面中有成千上萬的單元格。但是,我通常會將堆棧溢出與遞歸聯繫起來,並且在這種情況下,據我所見,沒有任何溢出。
創建一個這樣的lambda是否會自動生成一堆堆棧中的東西?有沒有辦法繞過它?
目前唯一的解決方法是在呈現HTML時使每個單元格明確生成onclick事件,這使得HTML變得更大。
你確定foo函數沒有遞歸嗎?如果您刪除該函數調用,錯誤是否仍然發生? – sth
它在其他瀏覽器中按預期工作嗎?當你評論'foo($('#docId').val(),$(this).attr('id'));'line? - 額外的性能提示:緩存選擇器的結果 - 例如將$(this)的結果保存在一個變量中,並根據需要在整個處理程序中使用它。 – WTK
我有類似的問題,但需要mouseenter事件。當使用身體或表格我沒有得到足夠的事件。 – ericslaw