Frage

Ich frage mich, ob dies möglich ist in JQuery.

Ich habe einige Javascript-Code, der DOM-Objekte im laufenden Betrieb, in Reaktion auf Benutzeraktionen erzeugt. Einige dieser DOM-Objekte sind in einer bestimmten Struktur - der Behälter immer das gleiche „class“ Attribut

.

Was ich möchte, ist zu tun, jedes Mal, wenn eine neue Instanz eines DOM-Objekt mit Klasse „X“ erstellt wird, möchte ich das gleiche Stück Javascript-Code auszuführen. Dieser Code wird ein „Onclick“ -Ereignis zu diesem DOM-Objekt hinzuzufügen.

Leider kann ich nicht nur den Code setzen, der die Onclick in document.ready (), da die Objekte zuweist, die es bindet an on the fly erstellt werden, lange nach document.ready () ausgeführt hat.

Hat JQuery können Sie persistente Bindungen einrichten, die automatisch auf eine Art von DOM-Objekt gebunden werden, auch wenn es im laufenden Betrieb erzeugt wird?

War es hilfreich?

Lösung

Dies wird verwendet von ‚Live‘, ‚Delegierten‘ abgedeckt werden, oder manchmal auch ‚binden‘. Diese werden nun ersetzt durch ‚auf‘ allerdings gibt es einige Einschränkungen, wie hier diskutiert: Javascript Ereignisbindung Persistenz

Andere Tipps

Ich glaube, ich habe die Antwort auf meine eigene Frage, direkt in der JQuery-Dokumentation, überraschend genug.

http://docs.jquery.com/Events/live#typefn

live( type, fn )

Veröffentlicht in jQuery 1.3: Bindet einen Handler auf ein Ereignis (wie Klick) für alle aktuellen - und zukünftigen - verglichene Element. Können auch benutzerdefinierte Ereignisse binden.

Haben Sie sich eine die jQuery-Plugin namens Livequery ?

Von der Livequery Dokumentation Seite:

  

Zum Beispiel könnten Sie die verwenden   folgenden Code ein Click-Ereignis zu binden   zu allen A-Tags, auch alle A-Tags Sie   könnte über AJAX hinzuzufügen.

$('a') 
>     .livequery('click', function(event) { 
>         alert('clicked'); 
>         return false; 
>     });
  

Wenn Sie neue A-Tags hinzufügen, um Ihre   Dokument, wird Live-Abfrage binden die   Ereignis klicken und es gibt nichts anderes   dass muss genannt oder durchgeführt werden.

Nicht möglich in jQuery Kern (wie Sie wahrscheinlich mit anderen Antworten realisiert habe auf einige Plugins) ausgelegt ... das kann eine sehr einfache Aufgabe sein, wenn Sie unbedingt alle Funktionen von so etwas wie livequery braucht nicht

Für den Browser, die sie unterstützen - das DOM Level 2-Ereignis verwenden - 'DOMNodeInserted':

http: // www. w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mutationevents

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top