<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怎么过滤,谢谢!
$('li:visible')
<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: 自己都不显示了,得到的肯定是0啊
@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")')进行筛选,否则就只能想幻天芒说的那样做了。
@LoveBaymax: 恩,现在就是用的这样的了.不过jQuery的选择器没有根据 style="display:none" 来选择的吗?
@wipphj: 没有,目前这个只有:visibile和:hidden,但是祖先元素隐藏了,当前元素也属于hidden的,所以这个不符合你的要求。
@LoveBaymax: thanks
加上li这个约束呗。。
可能是我没描述好,形如使用 $(".left-menu ul li:visible");获取数据, 而不受父节点是否显示的影响
@wipphj: 父节点都不显示了,自己肯定是不显示了哇。非要这样做,就自己用循环来判断。