Hay diferentes costos, vamos a ver ellos:
$('#mybutton').live('click', function(e){ doSomething(); });
Hay 2 costes principales aquí:
- El selector
#mybutton
necesita para funcionar de inmediato sin ningún motivo (el resultado se tira , solo queríamos el selector de todos modos ... estamos vinculados al document
). En este caso, es un #id
selector, por lo que es un costo muy bajo ... en otros casos, no es barato y desperdicia mucho (por ejemplo, [attr=something]
).
- Cada
click
que burbujea hasta document
ahora se debe comparar con este selector, un costo de evaluación por clic, esto varía con la cantidad de clics que esperas.
Ahora vamos a ver el otro método:
$('#mybutton').click(function(e){ doSomething(); });
Hay 2 costes principales aquí también:
- Los
#mybutton
carreras selectores, pero sólo una vez por petición ajax . Sin embargo, no lo estamos desperdiciando, estamos usando los resultados.
- El manejador
click
está ligado a un elemento real, en lugar de document
, por lo que hay un costo vinculante cada vez que se ejecuta, en lugar de una vez
Sin embargo, no hay ningún costo por clic y la llamada selector en sí mismo no se desperdicia ... por lo que es mejor en general, ya que está usando un ID, esto no es cierto en otros casos.
En su caso, ya que está tratando con un ID (y garantizado un solo elemento), esto es mucho más barato:
$('#mybutton').click(function(e){ doSomething(); });
En otros casos, en los que estés vinculante cientos de elementos, .live()
es el claro ganador, aunque .delegate()
sería incluso mejor.
http://www.artzstudio.com/2009/04/jquery-performance-rules/ –