Fügen Sie Ereignis-Listener für dynamisch erstellte Elemente hinzu
Ist möglich, fügen Sie Ereignis-listener (javascript), um alle dynamisch generierten Elemente?
Ich bin nicht der Besitzer der Seite, so kann ich nicht fügen Sie einen listener in einer statischen Weise.
für alle Elemente, die erstellt wird, wenn die Seite geladen wird, die ich benutze:
doc.body.addEventListener('click', function(e){
//my code
},true);
Ich brauche eine Methode, um diesen code aufzurufen, wenn neue Elemente auf der Seite angezeigt, aber ich kann jQuery (delegieren, auf, etc kann nicht die Arbeit in meinem Projekt). Wie kann ich dies tun?
InformationsquelleAutor der Frage jenjis | 2013-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es klingt wie Sie brauchen, um zu verfolgen, eine delegation Strategie, ohne zu fallen zurück in eine Bibliothek. Ich habe einige Beispiel-code in eine Geige hier: http://jsfiddle.net/founddrama/ggMUn/
Das wesentliche ist die Verwendung der
target
auf dieevent
Objekt zu suchen, für die Elemente, die Sie interessiert sind, und entsprechend reagieren. So etwas wie:VORBEHALTE! Das Beispiel Geige nur mit code für die Standard-konforme Browser (D. H., IE9+, und so ziemlich jede version jeder andere), Wenn Sie brauchen, um Unterstützung für "alte IE"
attachEvent
dann werden Sie wollen auch Ihre eigenen benutzerdefinierten wrapper für die ordnungsgemäße nativen Funktionen. (Es gibt viele gute Diskussionen da draußen darüber, wie ich die Lösung von Nicholas Zakas bietet in seinem Buch Professional JavaScript for Web Developers.)InformationsquelleAutor der Antwort founddrama
Hängt davon ab, wie Sie neue Elemente hinzufügen.
Wenn Sie mit
createElement
können Sie versuchen, diese:Dann können Sie
masterEventHandler()
zur Abwicklung sämtlicher Klicks.InformationsquelleAutor der Antwort ATOzTOA
Habe ich eine kleine Funktion zum hinzufügen dynamischen Ereignis-Listener, ähnlich
jQuery.on()
.Es verwendet die gleiche Idee wie die akzeptierte Antwort, nur, dass es die
Element.matches()
Methode zu überprüfen, ob das Ziel mit der gegebenen Auswahl übereinstimmt string.Können Sie erhalten, wenn von github.
InformationsquelleAutor der Antwort Cristy
Verwenden
classList
Eigenschaft zu binden, mehr als eine Klasse in einer ZeitInformationsquelleAutor der Antwort Rakesh Gupta