需要使用jQuery.find来查找具有特定样式的元素

时间:2009-10-13 20:06:25

标签: jquery find

对......我需要找到所有< ul style =“display:block;”>元素,以便我可以设置它做display:none。

我想我在这里走的是正确的道路......但不是那里:

jQuery('#adminMenu li').find("ul").css('display');

对于高级用户:如何通过一行查找和更改样式?

7 个答案:

答案 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选择器。