Non ci sono costi diversi, diamo un'occhiata a loro:
$('#mybutton').live('click', function(e){ doSomething(); });
Ci sono 2 principali costi qui:
- Il selettore
#mybutton
ha la necessità di eseguire immediatamente per nessun motivo (il risultato si butta via , volevamo solo il selettore comunque ... siamo vincolati a document
). In questo caso è un #id
selector quindi è un costo molto basso ... in altri casi non è economico e molto dispendioso (ad esempio [attr=something]
).
- Ogni
click
che bolle fino a document
deve ora essere confrontato con questo selettore, un costo di valutazione per clic, che varia in base al numero di clic previsti.
Ora diamo un'occhiata a l'altro metodo:
$('#mybutton').click(function(e){ doSomething(); });
Ci sono 2 principali costi qui così:
- I
#mybutton
piste di selezione, ma solo una volta per ogni richiesta ajax . Tuttavia, non lo stiamo sprecando, stiamo usando i risultati.
- Il gestore
click
è legato a un elemento reale, piuttosto che document
, quindi c'è un costo vincolante ogni volta che viene eseguito, invece di una volta
Tuttavia, non c'è nessun costo per clic e la chiamata di selezione di per sé non è sprecato ... quindi è complessivamente migliore, dal momento che stai usando un ID, questo non è vero negli altri casi.
Nel tuo caso, dal momento che hai a che fare con un ID (e garantito un unico elemento), questo è molto più conveniente:
$('#mybutton').click(function(e){ doSomething(); });
In altri casi, dove si sta vincolante centinaia di elementi, .live()
è il chiaro vincitore, anche se .delegate()
sarebbe ancora meglio.
fonte
2010-11-12 11:05:57
http://www.artzstudio.com/2009/04/jquery-performance-rules/ –