2009-09-24 12 views
8

Hai bisogno di un po 'di aiuto. Diciamo che ho una lista non ordinata e voglio che abbia sempre un numero pari di li. Come posso usare jQuery per contare il numero di li e aggiungerne uno vuoto alla fine, se il numero è dispari?jQuery - come contare il numero di li e aggiungerne uno se il numero è dispari?

Se vi state chiedendo il motivo, ho un menu a discesa in cui "ul li ul" è il doppio della larghezza di "ul li ul li", quindi il menu a tendina viene visualizzato in 2 colonne. Quindi, puramente per la grafica, sarebbe bello avere sempre un importo pari, anche se uno è vuoto.

Acclamazioni

risposta

10

Prova questa:

$("ul").each(function() { 
    var elem = $(this); 
    if (elem.children("li").length % 2 != 0) { 
     elem.append("<li></li>"); 
    } 
}); 

Questo dovrebbe aggiungere una voce dell'elenco per ogni lista non ordinata con uno strano numero di voci di elenco.

3
if($('#myUnorderedList > li').size() % 2 != 0) 
{ 
    //add an extra li somewhere 
    $('#myUnorderedList').append('<li>content</li>'); 
} 
4

lo farei in questo modo:

if ($('ul#my-ul > li').length %2 != 0){ 
    $('ul#my-ul').append('<li></li>'); 
} 
+0

ul # my-ul è ridondante e più lento di # my-ul. –

+0

è ridondante, ma IMHO più leggibile. Hai un link che spiega perché è più lento? Grazie –

+1

Gli ID sono unici. Quando esegui ul # my-ul, invochi una ricerca attraverso tutti gli elementi, cercando l'id. Troverò un link tra un minuto. –

Problemi correlati