2010-04-08 7 views
1

J'ai une div contenant du texte et quelques liens. Je veux déclencher un événement onclick, seulement si le clic se produit n'importe où dans la div, mais pas sur l'un des liens.Action de déclenchement lorsque l'élément est cliqué mais pas lorsque certains sous-éléments spécifiques sont

Quelle serait la meilleure façon (en termes de performances) de l'implémenter avec jQuery?

Celui que j'utilise est

$('#div').click(function(){ 

}); 

mais il désactive tous les #div> un

Répondre

3

Vous pouvez utiliser le

$("#div :not(a)").click(function(){ 
}); 

Cela se lier cliquez à tous les éléments à l'intérieur de la div qui ne sont pas <a> étiquettes.

$("#div").click(function(e){ 
    if (e.target.tagName === "A") 
    { 
     return false; 
    } 
    else 
    { 
     alert("click"); 
    } 
}); 

Cela se lier à un gestionnaire de clic pour se div puis vérifier la cible et si elle n'est pas <a> alors alerte sera affichée.

+0

Je ne pense pas que cela fonctionne. http://jsfiddle.net/ayM7R/ – Anurag

+0

C'est parce que votre sélecteur est faux. Vous avez écrit '$ (" # div: not (a) ")' au lieu de '$ (" # div: not (a) ")' – rahul

+0

Voir ceci dans l'action. http://jsfiddle.net/RMQQC/ – rahul

2
$('#div').bind('click', function(e){ 
    if(e.target == this){ 
     // do something 
    } 
}); 
+0

Est-ce que cela fonctionnera pour d'autres éléments à l'intérieur de la div? – rahul

Questions connexes