possono aggiungere ascoltatori jQuery rallentare le prestazioni del browser?
-
26-09-2019 - |
Domanda
Ho un'applicazione che porta la risposta tramite Ajax e crea 5-20 nuovi ascoltatori jQuery cliccare su ogni aggiornamento. Sia IE e browser Mozilla sembrano rallentare con l'uso. Can questo lento prestazioni del browser in modo significativo. Possono essere gli ascoltatori "liberati"?
Soluzione
ascoltatori impostati utilizzando .bind()
vengono rilasciati quando l'elemento viene rimosso o .unbind()
ed. Quelli stabiliti utilizzando .live()
persistono fino a quando si chiama noreferrer .die()
o l'elemento di essi sono tenuti a viene rimosso (che può essere in qualche parte del DOM se si specifica, altrimenti sarà di default alla radice DOM - opere .live()
da non vincolante per l'elemento di destinazione così l'elemento può essere rimosso / sostituito / aggiornato e gli ascoltatori di eventi sono ancora vincolati).
5-20 ascoltatori suona un po 'troppi -. Considerano vincolante meno i gestori, se possibile, come i vecchi browser si crepa sotto la pressione di gran lunga più veloce di quelli più recenti
Altri suggerimenti
Per aggiungere a quello che Andy ha detto su Live.
Probabilmente si dovrebbe utilizzare delegare o in diretta su elementi che si aggiungono alla pagina. Sembra che non sono vincolanti eventi unici ai nuovi elementi (su ogni refresh) ma le funzioni piuttosto riutilizzare.
In jQuery 1.4.2 uso può utilizzare delegato () in questo modo:
// the container, the selector, "the event", the function to be called
$("#container").delegate(".selector", "click", function(){
// do stuff...
});
Questo sarebbe solo bisogno di essere chiamato una sola volta e ogni nuovo elemento con il "selettore" class aggiunto alla "#container" avranno il loro evento click legato