2012-08-15 8 views
6

Quiero ser capaz de ocultar elementos de la lista que tienen menos de 3 caracteres, ¿cómo puedo hacer esto? ¿Qué pasa con mi código a continuación?Si li tiene menos de 3 caracteres, ¿ocultar?

Soy un novato de JavaScript/jQuery.

jQuery().ready(function() { 
    if (jQuery('ol li').length < 3) { 
     jQuery(this).hide(); 
    }; 
}); 

Respuesta

12

Su código está diciendo

if (jQuery('ol li').length < 3) { //If I have less than 3 li elements 
    jQuery(this).hide(); //hide the window object 
}; 

Lo que se quiere utilizar es el filtro

$('ol li').filter(function(){ return $(this).text().length<3; }).hide(); 

EDITAR - Basado en su comentario en mi post: Si se trata de una etiqueta span que podrían tener otros datos alrededor de ella:

$('ol li span').filter(function(){ return $(this).text().length<3; }).parent().hide() 

Fiddle running the span example

+0

Esto funciona, pero lo que si estoy tratando de dar cuenta de los personajes dentro de una etiqueta span así? Pero en última instancia, quería ocultar todo el li? ¡Gracias! –

+0

que usar texto() – epascarello

+0

¡Eso es mucho! –

1

Creo que se necesita para obtener el .html() de su elemento DOM y luego hacer .length en eso.

9

Tendrá que filtrar los elementos que tienen un contenido de menos de 3 caracteres, y ocultar los que:

$(function() { 
    $('ol li').filter(function() { 
     return $(this).text().length < 3 ; 
    }).hide(); 
}); 
+0

El filtro definitivamente parece ser la mejor forma de hacerlo. –

5
$('ul li').each(function() { 
    if ($(this).text().length < 3) 
     $(this).hide(); 
}); 

Demo

2

Prueba esto:

$('ol li').filter(function(){ return $(this).text().length < 3; }).hide(); 

Otra alternativa podría ser esta:

(Debido a que usted está evaluando los elementos no caracteres de valor en el código de pregunta fragmento)

if($('ol li').length < 3){ $(this).hide(); }; 
+0

¡Muchas gracias! –

Cuestiones relacionadas