需要使用jQuery.find来查找具有特定样式的元素
对…我需要找到所有
- 元素,这样我就可以设置display:none。
我想我在这里正确的道路……但不是那里:
jQuery('#adminMenu li').find("ul").css('display');
对于高级用户:如何通过一行查找和更改样式?
如上所述这很棘手,但可以通过其他方式解决。 最简单的是:
$("#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");
您可以使用属性选择器和“包含”选项
$('#adminMenu li ul[style*="display:block"]').hide()
这基本上说’任何ul的样式属性包含文本显示:块’
你可以使用filter。 ( http://api.jquery.com/filter/ )
所以你可以这样做。
$('ul').filter(function() { return $(this).css('display') == 'block'; });
$('#adminMenu li').find("ul:visible").css('display', 'none');
要么
$('#adminMenu li').find("ul:visible").hide();
要么
$('#adminMenu li ul:visible').hide();
举几个方面
您可以使用fadeOut()或slideUp()方法获得视觉效果:
jQuery('#adminMenu li').find("ul").fadeOut('fast'); jQuery('#adminMenu li').find("ul").slideUp('fast');
不知道如何在一行中做到这一点,但是你可以在以下几个方面做到这一点:
jQuery('#adminMenu li').find("ul").each(function (){ if($(this).css("display") == "block"){ // do something } });
如果您想要处理所有可见元素(而不仅仅是display: block
),您可以尝试使用:visible
选择器。
$('#adminMenu li ul').hide();