6

我希望能够隐藏少于 3 个字符的列表项,我该怎么做?我下面的代码有什么问题?

我是一个 JavaScript/jQuery 新手。

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

5 回答 5

13

你的代码说

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

您要使用的是过滤器

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

编辑 - 根据您在我的帖子中的评论:如果它是一个跨度标签,它周围可能有其他数据:

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

小提琴运行跨度示例

于 2012-08-15T21:13:52.993 回答
9

您需要过滤掉内容少于 3 个字符的元素,并隐藏这些元素:

$(function() {
    $('ol li').filter(function() {
        return $(this).text().length < 3 ;
    }).hide();
});
于 2012-08-15T21:14:16.833 回答
5
$('ul li').each(function() {
    if ($(this).text().length < 3)
        $(this).hide();
});

演示

于 2012-08-15T21:15:33.960 回答
2

试试这个:

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

另一种选择可能是这样的:

(因为您正在评估问题代码片段中的元素而不是值字符)

if($('ol li').length < 3){ $(this).hide(); };
于 2012-08-15T21:18:28.317 回答
1

我认为您需要获取.html()您的 DOM 元素,然后执行.length此操作。

于 2012-08-15T21:13:40.340 回答