首页 新闻 搜索 专区 学院

jQuery 选择器 display:none 无视父节点显示与否

0
悬赏园豆:10 [已解决问题] 解决于 2015-06-25 22:04
<div class="left-menu">
  <ul>
    <li id="lSnoVedio" style="display:none"><a href="javascript:void(0)">dfs</a></li>
    <li id="lSnoProcess"><a href="javascript:void(0)">fsdf</a></li>
    <li id="lSnoSafe"><a href="javascript:void(0)">fdsfs/li>
    <li id="lSnoAlt"><a href="javascript:void(0)">sdfs</a></li>
    <li id="lSnoMap"><a href="javascript:void(0)">fsdsf</a></li>
  </ul>
</div>

 

如上,不管父节点div或者ul,只根据'style="display:none"'过滤,只选取出来后四项,使用jQuery怎么过滤,谢谢!

wipphj的主页 wipphj | 初学一级 | 园豆:193
提问于:2015-06-24 10:52
< >
分享
最佳答案
1

$('li:visible')

收获园豆:10
芝芝07 | 菜鸟二级 |园豆:365 | 2015-06-24 12:00

<div class="left-menu" style="display:none">
  <ul>
    <li id="lSnoVedio" style="display:none"><a href="javascript:void(0)">dfs</a></li>
    <li id="lSnoProcess"><a href="javascript:void(0)">fsdf</a></li>
    <li id="lSnoSafe"><a href="javascript:void(0)">fdsfs/li>
    <li id="lSnoAlt"><a href="javascript:void(0)">sdfs</a></li>
    <li id="lSnoMap"><a href="javascript:void(0)">fsdsf</a></li>
  </ul>
</div>

var list=$(".left-menu ul li:visible");

获得的list,length=0啊

wipphj | 园豆:193 (初学一级) | 2015-06-24 13:08

@wipphj: 自己都不显示了,得到的肯定是0啊

DemonForever | 园豆:206 (菜鸟二级) | 2015-06-24 16:06

@wipphj: 给个建议,换种思路,可能是由于某些条件,需要隐藏一些元素,可以采用如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>HTML5</title>
    <meta charset="utf-8" />
    <script src="jquery-1.9.0.js"></script>
    <style>
        .hide {
            display:none;
        }
    </style>
</head>
<body>
    <div class="left-menu">
        <ul>
            <li id="lSnoVedio" class="hide"><a href="javascript:void(0)">dfs</a></li>
            <li id="lSnoProcess"><a href="javascript:void(0)">fsdf</a></li>
            <li id="lSnoSafe"><a href="javascript:void(0)">fdsfs/li>
            <li id="lSnoAlt"><a href="javascript:void(0)">sdfs</a></li>
            <li id="lSnoMap"><a href="javascript:void(0)">fsdsf</a></li>
        </ul>
    </div>
</body>
</html>

然后使用$('.left-menu li:not(".hide")')进行筛选,否则就只能想幻天芒说的那样做了。

芝芝07 | 园豆:365 (菜鸟二级) | 2015-06-24 16:39

@LoveBaymax: 恩,现在就是用的这样的了.不过jQuery的选择器没有根据 style="display:none" 来选择的吗?

wipphj | 园豆:193 (初学一级) | 2015-06-25 12:36

@wipphj: 没有,目前这个只有:visibile和:hidden,但是祖先元素隐藏了,当前元素也属于hidden的,所以这个不符合你的要求。

芝芝07 | 园豆:365 (菜鸟二级) | 2015-06-25 13:35

@LoveBaymax: thanks

wipphj | 园豆:193 (初学一级) | 2015-06-25 22:03
其他回答(1)
0

加上li这个约束呗。。

幻天芒 | 园豆:36652 (高人七级) | 2015-06-24 10:56

可能是我没描述好,形如使用 $(".left-menu ul li:visible");获取数据, 而不受父节点是否显示的影响

支持(0) 反对(0) wipphj | 园豆:193 (初学一级) | 2015-06-24 13:09

@wipphj: 父节点都不显示了,自己肯定是不显示了哇。非要这样做,就自己用循环来判断。

支持(0) 反对(0) 幻天芒 | 园豆:36652 (高人七级) | 2015-06-24 13:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册