Question

Vous avez ici un code qui ne fonctionne pas:

$("#sidebar ul li:last").each(function(){
      $(this).addClass("last");
});

En fait, j'ai 3 listes et que vous souhaitez ajouter une classe (dernier) à chaque élément apparaissant dans chaque dernière liste non ordonnée.

<ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li class="last">Item 3</li>
</ul>

L'espoir qui fait sens, Vive!

Était-ce utile?

La solution

erreur facile à faire. Essayez ceci:

$("#sidebar ul li:last-child").addClass("last");

En gros: dernière ne fait pas tout à fait ce que vous pensez. Il correspond uniquement à la dernière dans le document, pas le dernier dans chaque liste. C'est ce que:. Dernier enfant est pour

Autres conseils

avec jquery ajouter cette

$("ul li").last().addClass('last');

La raison qui ne fonctionne pas est due au fait que :last correspond à un seul élément. De la documentation jQuery:

  

Correspond au dernier élément sélectionné.

Alors, que votre code est en train de faire est d'obtenir un ensemble de tous les éléments de <li> dans un <ul> puis de cet ensemble en prenant la dernière valeur. Exemple:

 <ul>
   <li>1</li>
   <li>2</li>
 </ul>
 <ul>
   <li>3</li>
   <li>4</li>
 </ul>
 <ul>
   <li>5</li>
   <li>6</li>
 </ul>

Votre code renverrait le <li>6</li> élément. (En interne, il serait recueillir <li>1</li> à <li>6</li> puis élaguer le dernier et le retourner).

Qu'est-ce que vous cherchez est ce que les autres réponses ici ont dit:. :last-child

Ou vous pouvez donner à votre liste une carte d'identité et l'utiliser comme un contexte jquery appel.

<ul id="myList">
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
</ul>

<ul id="anotherList">
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
</ul>

Et vous pouvez alors faire:

jQuery("li:last", "ul#myList").addClass("lastItem");

Maintenant, la dernière li dans la première liste aurait la classe « lastItem ».

Edit: Désolé, mal lu la question. Ignorer cette s'il vous plaît.

Si vous devez ajouter la classe 3 listes distinctes, vous pouvez assigner une classe pour eux et utiliser chaque ':

$('#sidebar ul.class li:last-child').each(function(e){
    $(this).addClass("last");
});

Cela devrait fonctionner exactement comme prévu.

vous pouvez essayer

$('#sidebar ul li:last').addClass('last');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top