2009-09-07 10 views
5

Disons que j'ai le code suivant:événement click sur un div ne doit pas être déclenché par ses enfants

<div id="parent"> 
    <div id="child"></div> 
</div> 

Maintenant, j'attach un événement onClick à la div parent:

$('#parent').click(function() { ... }); 

est-il un moyen facile d'arrêter l'événement de déclencher quand je clique sur le div enfant? Je ne veux pas faire quelque chose comme

$('#child').click(function() { return false; }); 

parce que le div enfant pourrait contenir des liens ...

Merci!

Répondre

8

Cochez la case event target.

Le code suivant n'a pas été testé.

var div = document.getElementById('parent'); 
jQuery(div).click(function(event) { 
    if (event.target !== div) { 
    return false; 
    } 
}); 
+0

testé ... ceci fonctionne –

2

stopPropagation

$('#child').click(function(event) { 
     event.stopPropagation(); 
     //... 
}); 
+0

La question dit qu'il ne veut pas attacher un événement à chaque élément enfant. – Quentin

+0

@David Dorward, Que dit ici? "parce que le div enfant pourrait contenir des liens ..." –

+1

Juste pour protéger cette réponse un peu: stopPropagation a été utilisé mais preventDefault ne l'était pas, ce qui signifie que vos liens se déclencheront même si vous avez un gestionnaire assigné à cliquer. jQuery est extrêmement amical sur la façon dont il ajoute des gestionnaires d'événements pour s'assurer que le comportement par défaut et tous les gestionnaires précédemment assignés (c'est-à-dire, en ligne avec html) fonctionnent toujours comme prévu. –

Questions connexes