对......我需要找到所有< ul style =“display:block;”>元素,以便我可以设置它做display:none。
我想我在这里走的是正确的道路......但不是那里:
jQuery('#adminMenu li').find("ul").css('display');
对于高级用户:如何通过一行查找和更改样式?
答案 0 :(得分:25)
如上所述,这很棘手,但可以通过其他方式解决。最简单的是:
$("#adminMenu li ul:visible").hide();
假设项目隐藏或未隐藏。当然,考虑到你想要隐藏它们的原因不仅仅是:
$("#adminMenu li ul").hide();
尝试并避免直接更改CSS样式。这是有问题的。很难扭转,因为你发现很难找到。改为使用一个类:
#adminMenu li ul { display: none; }
ul.block { display: block; }
使用:
$("#adminMenu li ul").removeClass("block");
或
$("#adminMenu li ul.block").removeClass("block");
答案 1 :(得分:21)
您可以使用属性选择器和“包含”选项
$('#adminMenu li ul[style*="display:block"]').hide()
这基本上说'任何ul的样式属性包含文本显示:block'
答案 2 :(得分:6)
您可以使用过滤器。 (http://api.jquery.com/filter/)
所以你可以这样做。
$('ul').filter(function() {
return $(this).css('display') == 'block';
});
答案 3 :(得分:0)
$('#adminMenu li').find("ul:visible").css('display', 'none');
或
$('#adminMenu li').find("ul:visible").hide();
或
$('#adminMenu li ul:visible').hide();
列举一些方法
答案 4 :(得分:0)
您可以使用fadeOut()和slideUp()方法获得视觉效果:
jQuery('#adminMenu li').find("ul").fadeOut('fast');
jQuery('#adminMenu li').find("ul").slideUp('fast');
答案 5 :(得分:0)
$('#adminMenu li ul').hide();
答案 6 :(得分:0)
不知道如何在一行中完成它,但是这里有更多的方法可以做到这一点:
jQuery('#adminMenu li').find("ul").each(function (){
if($(this).css("display") == "block"){
// do something
}
});
如果你想要的是处理所有可见元素(而不仅仅是display: block
个),你可以试试:visible
选择器。