2013-07-24 18 views
7

Mam <ul>, który ma wiele dzieci (blisko 3000 pozycji) i niektóre z <li> s mają wiele poziomów. Dołączyłem detektor zdarzeń w "kliknięciu" (używam jQuery), którego używam do przełączania widoczności dzieci z <li>.Skuteczność detektora zdarzeń JavaScript dla setek elementów DOM

Zastanawiam się, jak posiadanie tak wielu detektorów zdarzeń wpływa na wydajność. (Jest ich co najmniej 1000!). Czy jest to duży problem dla wydajności?

Nie widzę zbyt dużej wydajności w przypadku nowych przeglądarek internetowych, ale IE8 wydaje się być bardzo powolny. Czy szaleńczo nieodpowiedzialne jest po prostu walnięcie słuchacza o wszystko ?!

Odpowiedz

9

Odpowiedź brzmi: wielki koklusz TAK. Tak, wpłynie to na wydajność. Delegacja wydarzeń została zbudowana w tym celu. Zamiast wiązania swojego programu obsługi do każdego pojedynczego li, należy powiązać go z jego rodzicem, ul. W ten sposób ul przekaże zdarzenie click do li.

$("ul").on("click", "li", function() { 
//your code 
}); 
+0

Oczywiście! Pozdrawiam za to, bardzo pomocne. –

+1

Byłoby bardziej pomocne, gdyby można było wspierać to liczbami. Mówienie "wpływa na wydajność" wcale nie jest pomocne. Oczywiście wpływa to na wydajność. Pytanie brzmi, ile –

Powiązane problemy