Domanda

Hai un codice qui che non funziona:

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

In sostanza ho 3 liste e si desidera aggiungere una classe (ultima) per ogni elemento che appare ultima in ogni lista non ordinata.

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

La speranza che abbia un senso, Cheers!

È stato utile?

Soluzione

errore facile da fare. Prova questo:

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

In sostanza: ultima non abbastanza fai quello che pensi lo fa. Esso corrisponde solo l'ultimo nel documento, non l'ultimo in ogni elenco. Questo è quello che:. Last-child è per

Altri suggerimenti

con jQuery aggiungere questo

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

Il motivo per cui non funziona è dovuto al fatto che :last corrisponde un solo elemento. Dalla documentazione jQuery:

  

Partite l'ultimo elemento selezionato.

Quindi, ciò che il codice sta facendo è sempre un insieme di tutti gli elementi in un <li> <ul> e poi da quello impostato di prendere l'ultimo valore. Esempio:

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

Il tuo codice sarebbe tornato l'elemento <li>6</li>. (Internamente, sarebbe raccogliere <li>1</li> a <li>6</li> e poi lop fuori l'ultimo e restituirlo).

Quello che stai cercando è quello che le altre risposte qui hanno detto:. :last-child

In alternativa si potrebbe dare la vostra lista un id e utilizzarla come un contesto di jquery-call.

<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>

E allora si può fare:

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

Ora l'ultimo Li nel primo elenco sarebbe di classe "lastItem".

Edit: Scusa, letto male la domanda. Ignorare questo per favore.

Se avete bisogno di aggiungere classe a 3 liste separate si può assegnare una classe per loro e usare 'ogni':

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

Questo dovrebbe funzionare esattamente come previsto.

si può provare

$('#sidebar ul li:last').addClass('last');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top