.live()
erfordert, dass Sie den Wähler sofort ausgeführt, es sei denn, das Ergebnis ist es sehr verschwenderisch verwenden. Der Event-Handler ist hier an document
angehängt, so dass alle Event dieses Typs von irgendwelchen sprudelnden Elementen überprüft werden müssen. Hier ist ein Anwendungsbeispiel:
$(".myClass").live("click", function() { alert("Hi"); });
Beachten Sie, dass die Aussage $(".myClass")
lief, daß der Wähler alle Elemente mit dieser Klasse finden obwohl wir nicht über sie kümmern, alles, was wir wollte war die Zeichenfolge ".myClass"
übereinstimmen später wenn click
Ereignisse Blase bis zu document
.
.delegate()
tatsächlich nutzt .live()
intern, aber mit einem Kontext. Der Selektor ist nicht sofort ausgeführt werden, so dass es bereits effizienter ist, und es nicht an document
anhängen (obwohl es kann) es ist viel mehr lokal ... und all diese andere Ereignisse von anderen Elementbäumen Sie nicht Umsorgt wird nie wieder, wenn geblubbert ... wieder effizienter. Hier ist ein Anwendungsbeispiel:
$("#myTable").delegate("td", "click", function() { alert("Hi"); });
Nun, was ist hier passiert? Wir $("#myTable")
liefen das Element zu erhalten, (zugegebenermaßen teurer als document
zu befestigen, aber wir sind das Ergebnis mit. Dann legen wir einen Event-Handler an den (oder in anderen Fällen) Elemente. Nur clicks
von innerhalb das Element gegen die "td"
Wähler überprüft, wenn sie passieren, nicht von überall wie .live()
ist (seit alles innen document
ist).
Zusätzlich zu der Antwort unten, Leser könnte einen Blick auf diese * unglaublich gut * [Artikel] (http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/) erklärt den Unterschied zwischen 'bind',' live' und 'delegate'. – Jon
Eine kurze Zusammenfassung: [JQuery - Live vs Delegat] (http://www.timacheson.com/Blog/2011/oct/jquery_live_vs_delegate). – Tim