Javascript 使用jQuery检查是否隐藏了所有div
我如何检查是否所有带有类测试的div都被隐藏。如果它们都是隐藏的,则将wrap1设置为隐藏。谢谢Javascript 使用jQuery检查是否隐藏了所有div,javascript,jquery,html,css,dom,Javascript,Jquery,Html,Css,Dom,我如何检查是否所有带有类测试的div都被隐藏。如果它们都是隐藏的,则将wrap1设置为隐藏。谢谢 <div id='wrap1'> <div class="header">Header 1</div> <div class='test'><a href="#">Test 1</a></div> <div class='test'><a href="#">Test 2</a>&l
<div id='wrap1'>
<div class="header">Header 1</div>
<div class='test'><a href="#">Test 1</a></div>
<div class='test'><a href="#">Test 2</a></div>
<div class='test'><a href="#">Test 3</a></div>
</div>
更新:
谢谢大家的快速回答,我成功了。它们都非常有用。查看它们是否都可见的更好方法是可见性计数与总计数相同
$("#wrap1 div:visible").length == $("#wrap1 div").length
您可以使用上面建议的选择器进行检查,如下所示:
if ( $("div.test:visible").length === 0)
$("#wrap1").hide( );
如果测试被隐藏,此代码段将循环所有测试并隐藏它们
$("div[id^='wrap']").each(function() {
var wrap = $(this);
if(wrap.children("div[class^='test']:visible").length == 0) {
wrap.hide();
} else {
wrap.show();
}
});
如果仍然希望在标记中完全没有测试(如“无”中的测试)时保持可见,则可以使用以下修改后的代码段:
$("div[id^='wrap']").each(function() {
var wrap = $(this);
if(wrap.children("div[class^='test']").length > 0 &&
wrap.children("div[class^='test']:visible").length == 0) {
wrap.hide();
} else {
wrap.show();
}
});
除了在边缘情况下,没有令人信服的理由对类进行编号。您的编号使上述代码以及CSS变得复杂。从测试中删除编号会更容易。您不需要它,因为您总是可以使用:ltindex、:gtindex、:eqindex、:first和:last来选择它们的子集
至于id的编号,这很好,因为每个id都必须是唯一的。注意,如果没有具有匹配类的div,这也会隐藏包装器div。不确定这是否是所需的行为。@tvanfosson:从技术上讲,如果标记中没有div.test,就等同于没有可见的div.test。我很确定这是你想要的行为。如果你只想在有div但它们都是隐藏的情况下使用这种行为,你可以检查以确保:hidden计数与:visible计数相同。@Andrew-我不确定。没有结果和所有结果都隐藏之间存在语义差异。我并不是说你的答案是错误的,只是指出行为不仅仅适用于“全部隐藏”的情况。@tvanfosson:无论如何,比较:隐藏长度和:可见长度可能不起作用,因为如果没有元素,两者都将返回0。你需要通过适当的类测试来验证这一点。根据OP,如果testN类DIV是隐藏的,即使header DIV不是,包装器也应该是隐藏的。有人可以编辑问题标题吗?我在找同一个班级的所有部门,差点错过了这个。向上投票问题。您还可以将if$div.test:visible.length==0行更改为if$分区测试:可见。长度。
jQuery("#wrap1").find("div").each(function()
{
if ($(this).is(':hidden'))
{
}
}
);