Vermeiden Sie Das Hinzufügen Von Ereignis-Mehrfach
Ich bin dynamisch hinzufügen-events mit addEvent("keydown", function() {});
zu einem element. Mein problem ist, dass es Zeiten gibt, wenn Sie diesen code erhalten, laufen auf das gleiche element zweimal oder mehr. Das Verhalten wird über die Funktion für das event angemeldet, läuft ein paar mal.
Gibt es eine Möglichkeit für mich nur den obigen code nur einmal auf ein element? Vielleicht prüfen Sie, ob das Ereignis bereits zuvor Hinzugefügt wurde?
Danke an jeden, der hilft.
- Ist diese Frage in Bezug auf den letzten? erhalten Sie mehrere Antworten aus der AutoVervollständigen - /ajax-plugin?
- Ja, das ist der Zusammenhang. Ich habe eine Funktion, wo der code oben erwähnt liegt. Beim laden der Seite die Funktion aufgerufen wird, die fügt einen Ereignis-listener für alle Eingänge, die eine gewisse Klasse. Auf dieser Seite hat der Benutzer die Möglichkeit zu schaffen, mehr Eingänge, nach der ich rufen Sie die gleiche Funktion zum hinzufügen der gleichen Veranstaltung. Das problem ist jetzt, dass die zuvor hinzugefügte Ereignis nicht überschrieben, sondern es wird dupliziert, die ist, warum bekomme ich so viele AJAX-requests durch den Autocompleter.
- auch glaube ich nicht die Schuld der Autocompleter für das senden mehrere Antworten. Da ich weiß, dass ich die gleiche AJAX-request mehrmals, es ist natürlich für das plugin zu Antworten, mit dem gleichen Ergebnis für die gleiche Anzahl von Zeiten, die ich die Anfrage gestellt, um diese Ergebnisse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entweder nicht mit einer neuen Funktion jedes mal, oder verwenden Sie eine Klasse oder etwas zu sagen, Sie habe ihn Hinzugefügt.
Nicht mit einer neuen Funktion jedes mal, wenn
MooTools'
addEvent
ist ein relativ dünner wrapper aufaddEventListener
/attachEvent
, die nicht fügen Sie die gleiche Funktion zweimal. Wenn Sie also stellen Sie sicher, Sie verwenden die gleiche Funktion, die Sie aufrufen könnenaddEvent
wieder, ohne dass es etwas zu tun:dann:
Live-Beispiel:
JS:
HTML:
Erinnern, die Sie Hinzugefügt haben, können Sie:
Live-Beispiel:
JS:
HTML:
hasEvent('click', myFenExactly)
Vielleicht ist Ihr problem ist nicht, wo oder Wann Sie Ereignishandler hinzufügen, aber hinzufügen. Es ist möglich, zu delegieren Veranstaltungen zu übergeordneten element. Dies ist ein Beispiel für eine klassische Möglichkeit, das hinzufügen eines event-handler direkt auf das Ziel-element.
Und, natürlich, nur der erste Absatz hat click-Ereignis.
Und unten ist ein Beispiel der Ereignis-delegation.
Da Ereignis-listener zugewiesen ist, ein Elternteil für alle Kinder, alle Absätze, wird das click-Ereignis, egal Wann und wo Sie erstellt werden. Es ist sehr nützlich, wenn Sie das hinzufügen von Elementen in die Seite dynamisch.
Ich weiß nicht, wie viel das hilft, aber es ist gut zu wissen.
- Element.Delegation