2009-09-24 12 views
8

Necesita un poco de ayuda de nuevo. Supongamos que tengo una lista desordenada, y quiero que siempre tenga una cantidad par de li en ella. ¿Cómo puedo usar jQuery para contar el número de li's, y agregar uno en blanco al final, si el número es impar?jQuery: cómo contar el número de li's y agregar uno si el número es impar?

Si se pregunta por qué, tengo un menú desplegable donde el "ul li ul" tiene el doble del ancho de "ul li ul li", por lo que el desplegable se muestra en 2 columnas. Entonces, puramente para efectos visuales, sería bueno tener siempre una cantidad igual, incluso si uno está en blanco.

Saludos

Respuesta

10

Prueba esto:

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

Esto debería añadir un elemento de la lista para cada lista desordenada con un extraño número de elementos de la lista.

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

lo haría así:

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

ul # my-ul es redundante y más lento que # my-ul. –

+0

es redundante, pero en mi humilde opinión más legible. ¿Tienes un enlace que explique por qué es más lento? Gracias –

+1

Ids son únicos. Cuando realiza ul # my-ul, invoca una búsqueda en todos los elementos, buscando la identificación. Encontraré un enlace en un minuto. –

Cuestiones relacionadas