Warum JavaScript-Ereignishandler für angehängte Elemente nicht ausgelöst werden
Wenn Sie neue Elemente an das DOM anhängen, z. B. im bereitgestellten HTML Code erkennen JavaScript-Ereignishandler, die zuvor definiert wurden, die neuen Elemente möglicherweise nicht. Dies kann zu unerwartetem Verhalten führen, da der JavaScript-Code auf das Vorhandensein bestimmter Elemente angewiesen ist, um Ereignisse auszulösen.
Um dieses Problem zu beheben, müssen Sie Ereignisdelegierung verwenden. Bei der Ereignisdelegierung handelt es sich um eine Technik, bei der Sie einen Ereignishandler an ein übergeordnetes Element anhängen, das zum Zeitpunkt des Ladens der Seite vorhanden ist. Wenn ein Ereignis auf einem untergeordneten Element auftritt, das später angehängt wurde, wird das Ereignis zum übergeordneten Element übertragen und der an das übergeordnete Element angehängte Ereignishandler wird ausgelöst.
Im bereitgestellten Code haben Sie auf klicken Ereignishandler für die .races-Elemente. Wenn dem DOM jedoch neue Elemente hinzugefügt werden, erkennt jQuery diese nicht, da sie bei der Initialisierung von jQuery beim Laden der Seite nicht vorhanden waren.
Um dies zu beheben, können Sie das Klickereignis an das nächstgelegene übergeordnete Element delegieren existiert beim Laden der Seite, z. B. das .races-Container-Div. Hier ist der aktualisierte Code:
$(document).ready(function(){ $('.races-container').on('click', '.races', function(e){ ... // Your event handler code }) });
Durch die Delegierung des Ereignisses an das .races-container-Div kann jQuery Klicks auf vorhandene und neu angehängte .races-Elemente verarbeiten und so sicherstellen, dass Ihr Ereignishandler ausgelöst wird richtig.
Denken Sie daran, dass die Ereignisdelegation eine gängige Technik bei der Arbeit mit dynamisch generierten Inhalten ist, da sie es Ihnen ermöglicht, Ereignisse für Elemente zu verarbeiten, die möglicherweise nicht vorhanden sind zum Zeitpunkt des Ladens der Seite.
Das obige ist der detaillierte Inhalt vonWarum können JavaScript-Ereignishandler bei angehängten Elementen nicht ausgelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!