jQuery查找隐藏的宝石

时间:2014-02-18 11:37:14

标签: jquery

如何找到无隐藏行数,这是html

<div style="display:none;">
  <ul id="abc">
    <li>List Item</li>
    <li>List Item</li>
    <li style="display:none;">List Item</li>
    <li class="hidden">List Item Hidden</li>
  </ul>
</div>

CSS

ul { border: 1px solid blue; padding: 2px; margin: 2px;}
li { width: 100px; height:100px; background-color:blue;}
.hidden { display: none; }

的jQuery

$(function () {
    alert($("#abc li:not(:hidden)").length);
});

http://jsfiddle.net/76NNp/27/

修改

守则按预期工作但我想要的是

查找隐藏Div中隐藏列表项的数量...

注意:它是一个弹出列表,我使用了一些代码来.hide()和.show()li但是list有display:none;我仍然想知道有多少项是可见的,好像它是零,我会隐藏打开这个弹出列表的按钮

修改------------------------------------------ 2

忘记一切......

我想找出一些未隐藏的列表项,如果它们所在的Div变得可见,它们将会变得可见。

简单如牛奶: - )

2 个答案:

答案 0 :(得分:2)

您可以过滤元素并检查其display样式是否设置为none。像这样:

$(function () {
    var items = $("li").filter(function(){
        return $(this).css("display") != "none";
    });
    alert(items.length);
});

Here is a working example

注意:这在很大程度上取决于display:none;是决定元素是否可见的唯一因素。如果您使用其他方法,例如visibility:hidden;,则需要修改过滤器以解决此问题。

答案 1 :(得分:1)

试试我的朋友:

    $(function () {
    $i = 0;
    $("ul > li").each(function(){
        if(!$(this).hasClass('hidden') || $(this).css('display') != 'none')
            $i++;
    });
    alert($i);
});