2010-11-28 3 views
5

J'essaie de faire cela mais aucune chance jusqu'ici ne sait comment sélectionner un élément sur le clic mais ne pas inclure des éléments dans des div spécifiques comme .box et tout le contenu à l'intérieur que div .boxjquery sur click select element si ce n'est pas dans la classe spécifique

petite mise à jour: merci pour les réponses, mais si j'utilise :not ou hasClass il ne garantira pas que les éléments à l'intérieur que foo ne seront pas sélectionnés. comme:

<div class=foo>this won't be selected <span>this will</span></div>

Répondre

8

Vous pouvez utiliser la méthode hasClass():

$('a').click(function() { 
    if (!(this).hasClass('foo')) { 
     // the clicked element doesn't have the foo class   
    } 
    return false; 
}); 
+0

Fonctionne très bien avec ça! if (! domEl.closest ('div'). hasClass ('box')) – Dejan

+0

Je n'arrive pas à le faire fonctionner avec jquery ui dialog, je suppose que c'est parce que les boîtes de dialogue sont construites, avec display: none, donc Je ne peux pas utiliser &&! domEl.closest ('div'). hasClass ('ui-dialog') – Dejan

5

Vous pouvez également utiliser le sélecteur: non().

$("#mydiv:not(.box)").click(function(){ 
    //do something 
}); 

si vous avez des éléments cibles spécifiques, comme vous voulez cibler <li> dans votre conteneur spécifié, cela devrait être idéal:

$("#mydiv:not(.box)>li").click(function(){ 
    //do something 
}); 

Cela ne devrait appliquer la fonction clic() au <li> élément enfant du conteneur et non a obtenu la classe .box.

1

En supposant que vous êtes à la recherche d'ancres, cela devrait fonctionner ...

$(":not(.box) a").click(function() { 
    // your code here 
}); 

Cependant, je vous suggère de réusinage votre balisage pour vous faciliter la tâche. Par exemple, vous pouvez placer explicitement une classe cliquable/notclickable sur chaque élément.

Questions connexes