Cible de premier niveau <li>s et pas imbriquée <li>s
J'ai le code HTML suivant:
<ul>
<li>A
<ul>
<li>subsection</li>
</ul>
</li>
<li>B
<ul>
<li>subsection</li>
</ul>
</li>
<li>C
<ul>
<li>subsection</li>
</ul>
</li>
</ul>
Avec jQuery, comment dois-je cibler le PREMIER niveau de <li>
s?
Par exemple, j'ai besoin de faire la police en gras sur le vol stationnaire à la <li>
s avec les lettres A, B et C, mais PAS que la police le style appliqué à la imbriquée <li>
s (avec le nom paragraphes).
Voici un premier jsfiddle DÉMO si vous souhaitez l'utiliser.
Grâce.
EDIT--
Solution:
ENFANT SÉLECTEURS, c'est la réponse.
Pas besoin de jQuery, ce qui peut être fait à l'aide de CSS.
Voici la mise à jour DÉMO
EDIT-- Voici un de plus en plus clair démo
Merci,
- double possible de la Sélection de seulement les premiers éléments de niveau en jquery
Vous devez vous connecter pour publier un commentaire.
Un container
<div>
avec une classe, et l'utilisation de la>
sélecteur. Disons que votre conteneur div de classe "maclasse":Remarque: le
>
sélecteur ne fonctionne pas dans IE6 et ci-dessous lorsqu'il est utilisé comme un sélecteur CSS. Il fonctionne dans tous les autres navigateurs bien, y compris IE7 et IE8, et lorsqu'il est utilisé en JQuery, il fonctionne dans tous les navigateurs pris en charge par jQuery, y compris IE6.body
:$('body > ul > li').css('border', '1px solid red');
inherit
donc, si vous définissez la.myclass > ul > li {font-size: 2em;}
alors tous vosli
s peut encore être affectée à moins que vous.myclass li {font-size: 1em;}
par défautVous pourriez faire ceci:
Mais il serait préférable de donner à votre haut niveau
<ul>
un ID de sorte que vous pouvez cibler avec un selecteur CSS valide:<li>
éléments à travers plusieurs haut niveau<ul>
éléments en même temps. Ou utiliser lemultiple-selector
avec les différents IDs.ENFANT SÉLECTEURS, c'est la réponse.
Pas besoin de jQuery, ce qui peut être fait à l'aide de CSS. Cible le premier niveau de
li
éléments avec un sélecteur:Puis d'annuler le style pour plus de
li
éléments:Voici la mise à jour DÉMO.
:hover
. Ici, j'ai créé un plus clair Démoul > li { font-weight: bold;}
li
s mais depuis je veux seulement le deuxième niveauli
s en gras que j'ai à "unbold" en appliquant la deuxième règleul > li li { font-weight: normal; }
. Du sens?CLASS.UL > li
pourquoi est-ce que les cibles de tous lesli
espère que les efface ma confusion. lorsque vous avez spécifiquement ciblées sapin li SEULEMENT.ul > li {…}
cible tous les enfants<li>
s dans le document, parce que nous sommes en utilisant le sélecteur d'enfant>
, qui est vraiment la même chose que de faire justeli {…}
, après tout, tous lesli
s sont d'abord les enfants de toute façon. Le truc, c'est la deuxième règle qui nie ce que la première règle n'. Mais vous le saviez déjà . Ne fait que répondre à votre question?ul > li
sur son propre ne peut pas travailler, mais ne comprends pas pourquoiCLASS.UL > li
n'est pas honoré mmm peut-être la bonne chose, je suis à la recherche est de " CLASSE >UL > li ill essayer, cela devrait fonctionner. alors il serait judicieux.<ul class="class-name">
et de la cible à partir de là que.class-name li {…}
. J'ai aussi remarqué que votre syntaxe est incorrecte: au lieu declass.ul > li
il devrait êtreul.class > li
. J'ai le sentiment que c'est ce qui est la cause de vos problèmes.Je voudrais définir une règle pour cible tous les li éléments, puis un autre pour remplacer ce que les objectifs imbriqués li éléments.
Imbriquée li éléments seraient de poids normal et de haut niveau serait audacieux.
Je ne pense pas que votre problème a été complètement traitée (même si il y a quelques bonnes tentatives). Votre exemple de problème porte sur l'application d'un style à un parent et empêchant l'enfant d'hériter le style, ce qui est un problème de CSS.
Vous pouvez cibler les éléments de la liste par la connaissance de l'élément parent (comme certains l'ont noté). Puis ajouter une classe sur le vol stationnaire.
Et votre CSS aurait la classe pour le parent, et une négation de style pour les enfants: