En sélectionnant seulement les premiers éléments de niveau en jquery
Comment puis-je sélectionner le lien des éléments d'un seul parent <ul>
à partir d'une liste comme celle-ci?
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a>
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
Donc dans le css ul li a
, mais pas ul li ul li a
Grâce
Vous devez vous connecter pour publier un commentaire.
Mais vous devez définir une classe sur la racine ul si vous souhaitez cibler les ultrapériphériques ul:
Alors c'est:
Une autre façon de vous assurer que vous avez seulement la racine li éléments:
Il semble encombrants, mais cela devrait faire l'affaire
Une fois que vous avez la première ul, vous pouvez utiliser le enfants (les) méthode, qui ne considèrent les enfants immédiats de l'élément. Comme @activa souligne, d'une manière facilement sélectionner l'élément racine est de donner une classe ou un id). Ce qui suit suppose que vous avez une racine ul id
root
.$('ul').first().children('li')
peut également être utiliséComme indiqué dans d'autres réponses, la méthode la plus simple consiste à identifier de manière unique l'élément racine (par ID ou le nom de la classe) et d'utiliser le descendant direct du sélecteur.
Cependant, je suis tombé sur cette question dans la recherche d'une solution qui permettrait de travailler sur sans nom des éléments à profondeurs variables du DOM.
Ceci peut être réalisé par la vérification de chaque élément, et s'assurer qu'il n'a pas un parent dans la liste des éléments qui correspondent. Voici mon solution, enveloppé dans un sélecteur jQuery 'supérieur'.
En utilisant cela, la solution pour le post original est:
Complète jsFiddle disponible ici.
:topmost
- essayez d'utiliser.parentElement.closest(selector)
. Comme toujours, c'est à dire+de Bord sont les seuls à ne pas le soutenir >:-( alors, voici un polyfill pastebin.com/JNBk77VmVous pourriez veux essayer ce si les résultats coule toujours vers le bas pour les enfants, dans de nombreux cas, JQuery continue de s'appliquer aux enfants.
À l'aide de cette méthode:
E > F Correspond à tout élément F qui est un enfant d'un élément de E.
Dit JQuery regarder uniquement explicite pour les enfants.
http://www.w3.org/TR/CSS2/selector.html
Simplement, vous pouvez utiliser cette..
Voir l'exemple : https://codepen.io/gmkhussain/pen/XzjgRE
Vous pouvez également utiliser
$("ul li:first-child")
pour ne recevoir que les enfants directs de l'UL.Je suis d'accord mais, vous avez besoin d'un ID ou autre chose afin d'identifier les principaux UL sinon, il suffit de les sélectionner tous. Si vous aviez un div avec un ID autour de l'UL, la meilleure chose à faire serait
$("#someDiv > ul > li")
:first-child
. Cela permet de sélectionner le "premierli
de chaqueul
". Le post original est en demandant "chaqueli
à partir de la premièreul
."Essayez ceci:
J'ai eu quelques difficultés avec les classes imbriquées à partir de n'importe quelle profondeur, alors j'ai pensé que cela. Il permettra de sélectionner uniquement le premier niveau il rencontre d'un contenant de l'Objet Jquery:
JS:
HTML:
1
il y a probablement beaucoup d'autres façons de
la seconde .forme-point au niveau d'arborescence enfant de la .add_to_cart