Essayer de comprendre la fonction jQuery ".not ()" et rencontrer un problème. Je voudrais que le div parent soit "cliquable" mais si un utilisateur clique sur un élément enfant, le script n'est pas appelé.
$(this).not(children()).click(function(){
$(".example").fadeOut("fast");
});
le html:
<div class="example">
<div>
<p>This content is not affected by clicks.</p>
</div>
</div>
e.stopPropagation();
place dereturn false;
pour ce cas.}).find('.classes-to-ignore').click(function(e) {
pour sélectionner des éléments enfants spécifiquese.stopPropagation()
puis d'utiliser à lareturn false
place.return false
équivaute.preventDefault(); e.stopPropagation()
donc à des effets secondaires inattendus.J'utilise le balisage suivant et j'ai rencontré le même problème:
Ici, j'ai utilisé la logique suivante:
En termes de question exacte, je peux voir que cela fonctionne comme suit:
ou bien sûr l'inverse:
J'espère que cela pourra aider.
la source
.on("click", ...)
dans les versions récentes de jQuery car il.live()
est obsolète depuis la v1.7. Voir api.jquery.com/liveOu vous pouvez faire aussi:
la source
Ma solution:
la source
Personnellement, j'ajouterais un gestionnaire de clics à l'élément enfant qui ne faisait rien d'autre que stopper la propagation du clic. Cela ressemblerait donc à quelque chose comme:
la source
stopPropagation
et renvoyer false comme le suggèrent d'autres réponses?stopPropagation
être plus propre car cela n'empêchera pas les événements sur les éléments enfants de se produire, ce qui peut arriver avecreturn false
.Voici un exemple. Le carré vert est le parent et le carré jaune est l'élément enfant.
J'espère que cela aide.
la source