J'ai un événement onclick attaché à une région dans ma page qui provoque une certaine action à déclencher lorsque l'utilisateur clique dessus (naturellement). J'ai récemment ajouté une image à cette région. Lorsque l'utilisateur clique sur cette image, je souhaite qu'une autre action se produise et que l'action associée à la région entière ne se produise pas. Cependant, je trouve que les deux événements sont, en fait, déclenché quand on clique sur l'image. Comment puis-je supprimer l'action à l'échelle de la région lorsque l'utilisateur clique sur l'image?Javascript: plusieurs événements tirant d'une seule action
1
A
Répondre
4
Darit est correct, vous devez arrêter l'événement de bouillonnement (propagation):
function imgEventHandler(e) {
// ^notice: pass 'e' (W3C event)
// W3C:
e.stopPropagation();
// IE:
if (window.event) {
window.event.cancelBubble = true;
}
}
1
Dans le gestionnaire d'événements pour l'image ne sont pas
event.cancelBubble = true;
puis à la fin faire
return false;
5
La question que vous exécutez en est connu comme événement bouillonnant. L'événement click de l'image fait une bulle jusqu'à tous les éléments parents de ce noeud. Vous voulez annuler le bouillonnement. La meilleure façon de faire cela qui fonctionne dans tous les navigateurs est d'utiliser un framework JavaScript. jQuery a un moyen très simple de le faire. D'autres frameworks ont des mécanismes similaires pour annuler le bouillonnement, il se trouve que je suis le plus familier avec jQuery.
Par exemple, vous pourriez faire quelque chose comme ça dans jQuery:
$('img').click(function() {
// Do some stuff
return false;// <- Cancels bubbling to parent elements.
});
Questions connexes
- 1. Empêcher les événements de se déclencher plusieurs fois à partir d'une seule action
- 2. problème dans plusieurs validation.xml pour une seule action dans struts2
- 3. Le gestionnaire d'événements Combobox KeyDown tirant plusieurs fois
- 4. Combinaison de plusieurs conditions en une seule fois en Javascript
- 5. Événements côté serveur JavaScript
- 6. sIFR et javascript événements
- 7. Les événements du plugin jQuery se déclenchent une seule fois
- 8. Jquery: un appel déclenché par plusieurs événements
- 9. Java - Gérer plusieurs événements avec une fonction?
- 10. ayant des sorties multiples pour une seule action
- 11. Silverlight 3 événements onload liant plusieurs instances
- 12. Comment arrêter l'exécution d'autres événements JavaScript
- 13. Plusieurs vues dans une seule plume (addSubview)
- 14. SQL - Plusieurs lignes dans une seule colonne
- 15. Plusieurs pages maîtres dans une seule application
- 16. Plusieurs storyboards sur une seule propriété
- 17. plusieurs scripts en javascript
- 18. Plusieurs rollovers Javascript
- 19. jQuery .. tirant une chaîne avant l'élément courant
- 20. Dans Workflow besoin d'écouter pour plusieurs événements
- 21. Javascript pour sélectionner plusieurs options
- 22. Référence répertoriant les événements JavaScript disponibles?
- 23. capturer des événements javascript dans C#
- 24. Comment identifier les événements liés via JavaScript?
- 25. jQuery: enfant tirant un événement pour son élément parent
- 26. Retourne JavaScript(). 4 bonnes actions - 1 action maléfique!
- 27. JavaScript - Form OnSubmit fonctionne mais Action ne fonctionne pas
- 28. trigger javascript action par défaut dans le gestionnaire d'événements
- 29. Unir plusieurs gestionnaires d'événements Javascript
- 30. Plusieurs fenêtres pop-up Javascript
La réponse la plus correcte, mais je crois que "retourner faux" est également nécessaire. – annakata
Peut-être que je fais quelque chose de mal, mais à des fins IE je trouve que je devais faire: si (window.event) { cancelBubble } else {} e.stopPropagation – ep4169