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"?

È stato utile?

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

È possibile separare un ascoltatore utilizzando unbind :

$("a").unbind("click"); // remove click event handler(s)
$("a").unbind(); // remove all event handlers

ed eventi live rimovibili usando die :

$("#foo").die(); // remove all live events
$("a").die("click"); // remove live click event handlers
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top