jquery: exclure les enfants
Je sais que cela a été demandé de nombreuses fois, et j'ai essayé toutes les suggestions, et tout lu sur différents sélecteurs, et etc. mais rien ne fonctionne pour moi
donné le morceau suivant du code HTML:
<div class="class1">
<p>
<a>link</a>
</p>
<div class="class2 class3">
<p>
<font>
<a>link2</a>
</font>
</p>
</div>
</div>
Je veux sélectionner la première div <a> tag, mais rien à partir de la deuxième div
J'ai essayé:
$('.class1').not('.class2, .class3')
$('.class1').not('.class2')
$('.class1').not('.class3')
$(".class1:not(.class2)")
$(".class1:not(.class3)")
$(".class1:not(.class2, .class3)")
$("div.class1:not(.class2)")
$("div.class1:not(div.class2)")
$("div.class1:not(div.*)")
etc.
Je ne sais pas si c'est parce que la deuxième div a deux noms de classe, ou parce que le deuxième div ' <a> balises ne sont pas les enfants de la deuxième div (par exemple, il y a des balises de polices et de ces autour d'eux), mais je ne suis pas en mesure d'exclure la deuxième div.
fyi - la balise font est obsolète: w3schools.com/tags/tag_font.asp
OriginalL'auteur null | 2010-07-10
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé le sélecteur d'enfant
>
?permettra de sélectionner uniquement les descendants immédiats de
class1
.Si vous avez besoin d'un plus large à la règle, je pense vous avez juste besoin d'ajouter un espace dans l'un de vos exemples:
Mise à jour à partir des commentaires: Cela fonctionne:
:not(.class2)
peut correspondre à la<p>
tag, donc je suis sûr que cela ne fonctionnerait pas.il doit s'arrêter au
class2
div. N'ai pas beaucoup travaillé avec ce bien donc je ne sais pas pour vous$(".class1 :not(.class2 .classe 3)") rompt l'ensemble de la chose, et en utilisant l'une ou l'autre de classe 2/classe 3 ne doit pas exclure la deuxième div
G bon à savoir! @null comment sur
:not(.class2.class3)
? Que serait la bonne notation.$(".class1 :not(.class2.classe 3)") n'exclut pas les div class="classe 2 classe 3"
OriginalL'auteur Pekka 웃
Eu le même problème, où n'importe quel nombre d'éléments pourraient être sur le chemin, ma solution a été:
Fondamentalement, tout obtenir, puis retirez tout ce que devrait être "exclus"
OriginalL'auteur Jonathan Regeimbal
Eh bien, cela dépend de vos besoins exacts, mais ce travail peut - il sélectionne la div, la
<p>
directement sous elle, et puis le lien:Pour trouver tous les liens à l'exception de ceux imbriqué dans un autre
<div>
, vous pouvez essayer quelque chose comme:Qui trouve tous les liens dans votre classe, et de supprimer les liens contenus dans un autre
<div>
, dans n'importe quel niveau. Vous écrivez qu'un peu plus court, il vous permettra, à l'aide de:si la structure est complexe, vous souhaitez peut-être quelque chose comme: stackoverflow.com/questions/3096098/...
pour compliquer encore, je ne suis pas juste de prendre tout d'un tag, je suis en utilisant .find('a[href$=".jpg"]') après la sélection de la classe div que je veux la une balise à partir de
ok $('.class1 > p').find('a[href$=".jpg"]') fonctionne correctement lorsque le premier enfant de .class1 est p t-il une méthode pour parcourir un tableau de balises, ainsi que leurs enfants, tout compris, et toutes les permutations sauf pour les enfants qui sont les divs?
le problème avec cette dernière version, est-il l'habitude de ramassage class1.find('div p') qui contient un lien que je ne veux pas inclus
OriginalL'auteur Kobi
Si vous utilisez le sélecteur d'enfant
E > F
plutôt que de la sélecteur de descendantF
en combinaison avec l'élément de noms, vous n'obtiendrez que l'élément désiré, par exemple:OriginalL'auteur Gumbo
bien, enfin travaillé sur une solution acceptable
rien d'autre a travaillé pour moi. merci pour l'aide, beaucoup de réponses ici aurait travaillé mais le premier div pourrait contenir un nombre quelconque d'éléments enfants (ou pas) avant la deuxième div, et le deuxième div pourrait contenir un nombre quelconque d'éléments enfants avant la balise que j'ai essayé de filtrer
OriginalL'auteur null