Chromeで「Uncaught RangeError:Maximum call stack size超過」というエラーが表示されます。ここに私のjQuery関数があります
$('td').click(function () {
if ($(this).context.id != null && $(this).context.id != '') {
foo($('#docId').val(), $(this).attr('id'));
}
return false;
});
ページには数万のセルがあることに注意してください。ただし、私は通常、スタックオーバーフローを再帰に関連付けます。この場合、私が見る限り、何もありません。
このようなラムダを作成すると、スタックに大量のものが自動的に生成されますか?それを回避する方法はありますか?
現時点での唯一の回避策は、HTMLをレンダリングするときに各セルでonclickイベントを明示的に生成することです。これにより、HTMLがはるかに大きくなります。
foo($('#docId').val(), $(this).attr('id'));
行をコメントしたときに発生しますか?-パフォーマンスに関する追加のヒント:セレクターの結果をキャッシュします。たとえば、結果を$(this)
変数に保存し、必要に応じてハンドラー全体で使用します。