livequery
ist ein völlig anderes Konzept als .live()
.
En .live()
Methode verwendet Veranstaltungsdelegation um Ereignisse zu behandeln, die irgendwo auf der Seite auftreten.
livequery
ruft Handler auf, wenn DOM-Änderungen auftreten (über jQuery-Methoden) .
Für das folgende Beispiel: Wenn ein Element mit class="some_class"
zum DOM hinzugefügt wird (oder die Klasse zu einem Element hinzugefügt wird), wird der erste Handler ausgeführt. Wenn sie entfernt wird, wird der zweite ausgeführt.
$('.some_class').livequery( function() {
// apply a plugin to the element
$(this).somePlugin();
}, function() {
// clean up after the element was removed
});
Es sollte wenig aktuell Bedarf an livequery
aber in dem seltenen Fall, dass Sie auf DOM-Änderungen reagieren müssen und keine Kontrolle über die jQuery haben, die diese Änderungen verursacht, kann es nützlich sein.
4 Stimmen
Ja, livequery ist tot. Es ist auch ein Anti-Muster
2 Stimmen
@Raynos Was ersetzt es? Bis jetzt habe ich noch keine Beispiele gefunden, die seinen Zweck erfüllen. .on ist für Ereignisse, und das einzige Jquery-Ereignis, das nahe kommt, ist DOMNodeInserted, die nicht breite Browser-Unterstützung hat.
1 Stimmen
@AaronLS Ereignisdelegation wird Ihr Problem lösen. Wenn Sie benötigen
DOMNodeInserted
Ihr entweder den Aufbau einer komplexen Templating-System oder Ihr tun es falsch. Wenn das erstere dann nur bauen eine einfache Templating-System statt4 Stimmen
@Raynos Wow, wirklich? Du hast gerade eine ganze Reihe von ungültigen Annahmen gemacht. Ich habe eine Menge gültiger Verwendungen von livequery gesehen und habe noch keine Alternative gesehen, die die Trennung von Belangen bewahrt. Es gibt in der Tat Initialisierungsszenarien beim Umgang mit dynamischen Inhalten, insbesondere in einseitigen Anwendungen, die nicht an ein bestimmtes Ereignis gebunden sind, und daher wird die Ereignisdelegation das Problem NICHT lösen. Wenn Sie etwas anderes glauben, dann geben Sie ein Beispiel. Ich bin schon öfter auf die "Sie machen es falsch"-Art gestoßen, und Sie lassen jede praktikable Lösung aus, weil es Ihr Ziel ist, andere niederzumachen.
0 Stimmen
@AaronLS nennen Sie mir einen Anwendungsfall für livequery. Ich werde Ihnen eine bessere Alternative nennen.
4 Stimmen
@Raynos Hier ist ein Anwendungsfall - ein UserScript. Ich kontrolliere nicht den Code, der Elemente in die Seite einfügt, aber ich möchte, dass mein Skript weiß, wann sie eingefügt werden. Ich habe noch keine andere Möglichkeit gesehen, dies zu erreichen.