.live()
requiere ejecutar el selector de inmediato, a menos que esté usando el resultado es un gran desperdicio. El manejador de eventos aquí se adjunta al document
, por lo que se debe verificar todo evento de ese tipo desde cualquier elemento que burbujee. Aquí hay un ejemplo de uso:
$(".myClass").live("click", function() { alert("Hi"); });
Tenga en cuenta que la declaración $(".myClass")
corrió ese selector para encontrar todos los elementos con que clase a pesar de que no se preocupan por ellos, todo lo que querían fue la cadena ".myClass"
para que coincida más tarde cuando click
eventos burbujean hasta document
.
.delegate()
utiliza realmente .live()
internamente, pero con un contexto. El selector es no ejecutándose inmediatamente, por lo que ya es más eficiente, y no se conecta a document
(aunque puede) es mucho más local ... y todos esos otros eventos de otros árboles de elementos que no los cuidados nunca se controlan cuando se burbujean ... nuevamente más eficientes. Aquí hay un ejemplo de uso:
$("#myTable").delegate("td", "click", function() { alert("Hi"); });
¿Qué pasó aquí? Corrimos $("#myTable")
para obtener el elemento para unir a (la verdad es más caro que document
, pero estamos usando el resultado. A continuación se adjunta un controlador de eventos para que la (o las de otros casos) elementos. Sólo clicks
de dentro ese elemento se comprueba con el selector "td"
cuando ocurren, no desde todas partes como .live()
qué (ya que todo lo está dentro document
).
Además de la respuesta a continuación, los lectores pueden querer echar un vistazo a esto * increíblemente bueno * [artículo] (http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/) que explica la diferencia entre 'bind',' live' y 'delegate'. – Jon
Un resumen conciso: [JQuery - live vs delegate] (http://www.timacheson.com/Blog/2011/oct/jquery_live_vs_delegate). – Tim