Possible en double:
jQuery filtering selector to remove nested elements matching pattern.jQuery - classe select ne figure pas dans une autre classe
J'ai une hiérarchie de groupes. Quelque chose comme:
<div class="group">
<span class="child"></span>
<div class="group">
<span class="child"></span>
<span class="child"></span>
<span class="child"></span>
</div>
<span class="child"></span>
<span class="child"></span>
<div>This child is farther down <span class="child"></span></div>
</div>
Comment puis-je sélectionner les enfants dans chaque groupe, sans sélectionner les enfants d'un sous-groupe?
$(".group").each(function() {
// Wrong, click fires twice (the 1st level group selects 2nd level children)
var children = $(this).children(".child");
// Wrong, click fires twice
children = $(this).children(":not(.group) .child");
// How can I properly do this??
children.click(function() {
alert("children.click");
});
});
J'ai aussi essayé find()
au lieu de children()
, mais je ne peux pas sembler que cela fonctionne correctement. De même, je ne peux pas utiliser d'enfants directs (ou >
) car les descendants pourraient se trouver à l'intérieur d'autres balises HTML non-.gorup (c'est-à-dire, plusieurs niveaux DOM).
Mmmh j'ai essayé dans jsFiddle et le clic est pas tiré deux fois .. Mais quoi qu'il en soit, vous pouvez utiliser 'event.stopPropagation()' pour empêcher l'événement de bouillonner. –
Que voulez-vous dire que les enfants peuvent être plusieurs couches vers le bas? Quelle que soit la structure, .group> .child récupère les groupements dont vous avez besoin en fonction de la disposition DOM. –
Enfants! = Descendants. * Les enfants * ne peuvent être qu'une seule couche vers le bas ... –