W przeglądarce Chrome pojawia się błąd „Uncaught RangeError: maksymalny rozmiar stosu wywołań przekroczony”. oto moja funkcja jQuery
$('td').click(function () {
if ($(this).context.id != null && $(this).context.id != '') {
foo($('#docId').val(), $(this).attr('id'));
}
return false;
});
Zwróć uwagę, że strona zawiera dziesiątki tysięcy komórek. Generalnie jednak przepełnienie stosu kojarzy mi się z rekurencją iw tym przypadku, o ile widzę, nie ma jej.
Czy tworzenie takiej lambdy automatycznie generuje ładunek rzeczy na stosie? czy jest jakiś sposób na obejście tego?
W tej chwili jedynym rozwiązaniem, jakie mam, jest jawne generowanie zdarzeń onclick w każdej komórce podczas renderowania kodu HTML, co sprawia, że kod HTML jest znacznie większy.
foo($('#docId').val(), $(this).attr('id'));
linii? - Dodatkowa wskazówka dotycząca wydajności: buforuj wyniki selektorów - na przykład zachowaj wynik $(this)
w zmiennej i używaj go w razie potrzeby w module obsługi.