Considérer ce qui suit:
<div onclick="alert('you clicked the header')" class="header">
<span onclick="alert('you clicked inside the header');">something inside the header</span>
</div>
Comment puis-je faire en sorte que lorsque l'utilisateur clique sur la plage, il ne déclenche pas l' div
événement de clic?
javascript
html
events
dom
Sam
la source
la source
event
semble également être disponible dans les événements en ligne dans IOS Safari.Il existe deux façons d'obtenir l'objet événement de l'intérieur d'une fonction:
Si vous devez prendre en charge les navigateurs hérités qui ne suivent pas les recommandations du W3C, généralement à l'intérieur d'une fonction, vous utiliserez quelque chose comme ceci:
qui vérifierait d'abord l'un, puis l'autre et stocker celui qui a été trouvé dans la variable d'événement. Cependant, dans un gestionnaire d'événements en ligne, il n'y a pas d'
e
objet à utiliser. Dans ce cas, vous devez profiter de laarguments
collection qui est toujours disponible et fait référence à l'ensemble complet des arguments passés à une fonction:Cependant, en règle générale, vous devez éviter les gestionnaires d'événements en ligne si vous avez besoin de quelque chose de compliqué comme l'arrêt de la propagation. Écrire vos gestionnaires d'événements séparément et les attacher à des éléments est une bien meilleure idée à moyen et long terme, à la fois pour la lisibilité et la maintenabilité.
la source
onclick="foo(event)"
puis dans la fonctionfunction foo(event){/* do stuff with event */}
. Cela fonctionne à la fois dans les modèles d'événements IE et W3C.Gardez à l'esprit que window.event n'est pas pris en charge dans FireFox, et qu'il doit donc s'agir de quelque chose comme:
Ou, vous pouvez utiliser la norme W3C pour FireFox:
Si vous voulez devenir chic, vous pouvez le faire:
la source
<div onclick="myEventHandler(event);">
e.cancelBubble
renvoie faux dans IE! Il ne peut pas atteindre l'e.cancelBubble = true;
instruction. Utilisez plutôt l'état de SoftwareARM !!Utilisez cette fonction, elle testera l'existence de la bonne méthode.
la source
J'ai eu le même problème - boîte d'erreur js dans IE - cela fonctionne très bien dans tous les navigateurs pour autant que je puisse voir (event.cancelBubble = true fait le travail dans IE)
la source
Cela a fonctionné pour moi
la source
Pour les pages Web ASP.NET (pas MVC), vous pouvez utiliser l'
Sys.UI.DomEvent
objet comme wrapper d'événement natif.ou, passez l'événement comme paramètre à la fonction interne:
et dans certains Fonction:
la source
Selon cette page , dans IE, vous avez besoin de:
event.cancelBubble = true
la source
Je ne peux pas commenter à cause de Karma, donc j'écris ceci comme une réponse entière: selon la réponse de Gareth (var e = arguments [0] || window.event; [...]), j'ai utilisé cette ligne en ligne sur le onclick pour un piratage rapide:
Je sais qu'il est tard mais je voulais vous faire savoir que cela fonctionne sur une seule ligne. Les accolades renvoient un événement auquel la fonction stopPropagation est attachée dans les deux cas, j'ai donc essayé de les encapsuler entre accolades comme dans un if et .... cela fonctionne. :)
la source
Cela fonctionne également - Dans le lien HTML, utilisez onclick avec return comme ceci:
Et puis la fonction comfirmClick () devrait être comme:
la source
confirm
n'est pas pertinent. Je fais référence à la valeur de retour . citation: Dans le lien HTML, utilisez onclick avec retour comme celui-ciPourquoi ne pas simplement vérifier quel élément a été cliqué? Si vous cliquez sur quelque chose,
window.event.target
est affecté à l'élément sur lequel vous avez cliqué, et l'élément cliqué peut également être passé en argument.Si la cible et l'élément ne sont pas égaux, c'est un événement qui s'est propagé.
la source
la source
La meilleure solution serait de gérer l'événement via une fonction javascript, mais afin d'utiliser une solution simple et rapide en utilisant directement l'élément html, et une fois que "event" et "window.event" sont obsolètes et ne sont pas universellement pris en charge ( https://developer.mozilla.org/en-US/docs/Web/API/Window/event ), je suggère le "code dur" suivant:
la source