2012-08-15 3 views
6

Ich möchte Listenelemente ausblenden können, die weniger als 3 Zeichen haben, wie mache ich das? Was ist falsch an meinem Code unten?Wenn li weniger als 3 Zeichen hat, ausblenden?

Ich bin ein JavaScript/jQuery-Neuling.

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

Antwort

12

Ihr Code sagt

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

Was Sie verwenden möchten, ist Filter

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

EDIT - Basierend auf Ihren Kommentar in meinem Beitrag: Wenn es ein span-Tag ist, die andere Daten haben könnte um ihn herum:

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

Fiddle running the span example

diejenigen
+0

Dies funktioniert (weil Sie Elemente nicht Wert Zeichen in Ihrer Frage Code-Schnipsel evaluieren), aber was ist, wenn ich auch für die Charaktere in einem span-Tag zu erklären versuchen? Aber letztendlich wollte ich das ganze li verstecken? Vielen Dank! –

+0

als verwenden Sie text() – epascarello

+0

, dass Sie sehr viel! –

1

Ich glaube, Sie brauchen die .html() Ihr DOM-Element zu bekommen und dann tun .length darauf.

9

Sie müssen die Elemente herauszufiltern, die einen Gehalt von weniger als 3 Zeichen lang sein und verstecken:

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

Der Filter scheint definitiv der beste Weg zu sein. –

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

Demo

2

Try this:

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

Eine andere Alternative könnte dies sein:

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

Vielen Dank! –

Verwandte Themen