Ich habe ein onclick -Ereignis an eine Region in meiner Seite angefügt, die eine bestimmte Aktion ausgelöst wird, wenn der Benutzer darauf klickt (natürlich). Ich habe dieser Region kürzlich ein Bild hinzugefügt. Wenn der Benutzer auf dieses Bild klickt, möchte ich, dass eine andere Aktion stattfindet, und ich möchte nicht, dass die Aktion für die gesamte Region ausgeführt wird. Ich finde jedoch, dass beide Ereignisse ausgelöst werden, wenn man auf das Bild klickt. Wie kann ich die bereichsweite Aktion unterdrücken, wenn auf das Bild geklickt wird?Javascript: mehrere Ereignisse feuern aus einer Aktion
1
A
Antwort
4
darit korrekt ist, müssen Sie das Ereignis verhindern, sprudelt (ausbreitende):
function imgEventHandler(e) {
// ^notice: pass 'e' (W3C event)
// W3C:
e.stopPropagation();
// IE:
if (window.event) {
window.event.cancelBubble = true;
}
}
1
Im Ereignishandler für das Bild tun
event.cancelBubble = true;
und dann am Ende tun
return false;
5
Das Problem, das Sie in laufen als Ereignis sprudelnden bekannt ist. Das Klickereignis des Bildes blubbert an allen übergeordneten Elementen dieses Knotens. Sie möchten die Blasenbildung abbrechen.
Der beste Weg, dies über alle Browser hinweg zu tun, ist die Verwendung eines JavaScript-Frameworks. jQuery hat eine sehr einfache Möglichkeit, dies zu tun. Andere Frameworks haben ähnliche Mechanismen, um das Blubbern aufzuheben. Ich kenne jQuery nur am besten.
Zum Beispiel Sie so etwas wie dies in jQuery tun könnte:
$('img').click(function() {
// Do some stuff
return false;// <- Cancels bubbling to parent elements.
});
Verwandte Themen
- 1. jqGrid Ereignisse nicht feuern
- 2. Isotop Ereignisse nicht feuern
- 3. Meteor Ereignisse nicht feuern
- 4. UITextView Touch-Ereignisse nicht feuern
- 5. Socket.io mehrere Ereignisse auslösen
- 6. Javascript eventemitter mehrere Ereignisse einmal
- 7. Javascript: Mehrere mouseout Ereignisse ausgelöst
- 8. Java - KeyListener Ereignisse nicht feuern
- 9. jsTree dnd Ereignisse nicht feuern
- 10. Android - onKey Ereignisse feuern nicht
- 11. Bootstrap 3.0.0 modale Ereignisse nicht feuern
- 12. Bootstrap 3.3.2 Modale Ereignisse feuern mehrmals
- 13. Auf mehrere Ereignisse warten
- 14. Profile_OnMigrateAnonymous Ereignis mehrere Male feuern
- 15. Grundlegende CoffeeScript nicht feuern Ereignisse beim Lauf?
- 16. jQuery & Backbone klicken Ereignisse nicht feuern
- 17. Verhindern, dass Ereignisse mehrfach von einer einzelnen Aktion ausgelöst werden
- 18. Tastatur Ereignisse nicht feuern in RT App
- 19. Mehrere Regex aus einer Zeichenfolge filtern Javascript
- 20. Rückgabewert berechnet aus Javascript Filereader onload Ereignisse
- 21. Javascript FileReader onload nicht feuern
- 22. Ausführen einer Aktion im Leerlaufzustand in JavaScript
- 23. Auslösen einer Funktion auf mehrere Ereignisse
- 24. Mehrere Timer mit unterschiedlichen Verzögerungen> mehrere Ereignisse abgeschlossen?
- 25. Javascript manuell feuern .onchange() Ereignis
- 26. JavaScript Scroll Handler nicht feuern
- 27. Mehrere Application_Start-Ereignisse ausgelöst
- 28. Formular Aktion mit Javascript
- 29. Cross-Fenster Javascript Ereignisse
- 30. Main Thread wartet nicht auf Ereignisse oder Callbacks zu feuern
Die richtige Antwort, aber ich glaube "Return false" ist auch erforderlich. – annakata
Vielleicht etwas, was ich falsch mache hier, aber für IE Zwecke Ich fand ich tun musste: if (window.event) { cancelBubble } else { e.stopPropagation } – ep4169