2013-07-24 17 views
7

Ho uno <ul> che ha molti figli (vicino a 3000 articoli) e alcuni dei <li> hanno molti livelli. Ho allegato un listener di eventi su "click" (sto usando jQuery) che uso per attivare la visibilità dei figli di uno <li>.Prestazione listener di eventi JavaScript per centinaia di elementi DOM

Mi chiedo come avere così tanti ascoltatori di eventi impatta sulle prestazioni. (Ce ne sono almeno 1000!). È un grosso problema per le prestazioni?

Non vedo davvero molto di un problema in termini di prestazioni con i nuovi browser Web, ma IE8 sembra essere molto lento. È follemente irresponsabile battere semplicemente un ascoltatore di eventi su tutto ?!

risposta

9

La risposta è un grande urlo SI. Sì, influirà sulle prestazioni. La delegazione degli eventi è stata costruita per questa cosa esatta. Invece di legare il gestore a ogni singolo li, collegarlo al relativo genitore, ul. In questo modo, lo ul delegherà l'evento click a li.

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

Naturalmente! Saluti per questo, molto utile. –

+1

Sarebbe più utile se si potesse supportare questo con i numeri. Dicendo che "influenza le prestazioni" non è affatto utile. Ovviamente influisce sulle prestazioni. La domanda è quanto –

Problemi correlati