Otrzymuję komunikat "Uncaught RangeError: Przekroczono maksymalny rozmiar stosu połączeń" na chrome. tutaj jest moja funkcja jQueryChrome/jQuery Uncaught RangeError: Przekroczono maksymalny rozmiar stosu wywołań
$('td').click(function() {
if ($(this).context.id != null && $(this).context.id != '') {
foo($('#docId').val(), $(this).attr('id'));
}
return false;
});
pamiętać, że istnieją dziesiątki tysięcy komórek na stronie. Jednak generalnie kojarzę przepełnienie stosu z rekursją iw tym przypadku, o ile widzę, nie ma.
Czy tworzenie lambda w ten sposób automatycznie generuje ładunek materiału na stosie? czy jest jakikolwiek sposób wokół tego?
W tej chwili jedynym sposobem obejścia problemu jest wygenerowanie zdarzeń onclick jawnie dla każdej komórki podczas renderowania kodu HTML, co powoduje, że kod HTML jest znacznie większy.
Czy na pewno funkcja foo nie powtarza się? Czy błąd nadal występuje, jeśli usuniesz to wywołanie funkcji? – sth
Czy działa zgodnie z oczekiwaniami w innych przeglądarkach? Czy ten błąd występuje, gdy skomentujesz 'foo ($ ('# docId'). Val(), $ (this) .attr ('id'));' linia? - Dodatkowa wskazówka dotycząca wydajności: buforuj wynik selektorów - na przykład zachowaj wynik '$ (this)' w zmiennej i używaj go w poprzek programu obsługi w razie potrzeby. – WTK
Mam podobny problem, ale potrzebne są zdarzenia związane z mouseenter. Podczas używania ciała lub stołu nie dostaję wystarczającej ilości zdarzeń. – ericslaw