2009-05-25 6 views
1

Si je ...Comment puis-je empêcher les événements parents de se déclencher?

<div id="parent" onmouseover="doSomething()"> 
    <div id="child" onmouseover="doSomethingElse()"> 
    </div> 
</div> 

Comment puis-je faire en sorte que ne soit pas exécuté doSomething() quand je suis en vol stationnaire au-dessus de l'enfant? Je veux seulement que doSomethingElse() s'exécute quand je survole l'enfant, et je veux seulement que doSomething() s'exécute quand je suis sur le parent.

Chaque fois que je survole l'enfant, les deux fonctions s'exécutent. Des idées?

Matt

Répondre

1
function doSomethingElse(e) { 
// your function body 

e.stopPropagation() 

} 
+0

ne fonctionne pas dans IE – Christoph

+0

est-ce pas une fonction jQuery? – Macha

+0

non c'est pure javascript: https://developer.mozilla.org/En/DOM/Event.stopPropagation –

1

Modifier la valeur d'attribut à

onmouseover="doSomethingElse(event)" 

et changer doSomethingElse() à

function doSomethingElse(e) { 
    e.stopPropagation && e.stopPropagation(); 
    e.cancelBubble = true; 
    // ... 
} 
+0

le cancelBubble n'est pas une propriété standard. Il est préférable d'utiliser la méthode stopPropagation –

+1

@Marwan: si vous voulez ignorer les utilisateurs IE, allez-y, mais vérifiez au préalable les navigateurs de votre public cible – Christoph

+0

Tant que IE ignore les normes qu'il mérite comme traitement. Oeil pour oeil, et tout ce jazz. ;-) –

0

Je n'ai pas testé, mais il devrait y avoir quelques façons de fais le.

S'il vous plaît vérifier événement bouillonnement: il est différent dans IE et Firefox, mais encore: www.quirksmode.org/js/events_order.html

Questions connexes