使用jQuery检查是否所有div都被隐藏

时间:2009-08-03 15:03:02

标签: 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></div>
<div class='test'><a href="#">Test 3</a></div>
</div>

更新: 感谢大家的快速回答,我让它发挥作用。他们都非常有帮助。

4 个答案:

答案 0 :(得分:35)

您可以按照上面的建议使用选择器进行检查,如下所示:

 if ( $("div.test:visible").length === 0)
      $("#wrap1").hide( );

答案 1 :(得分:8)

如果测试被隐藏,此代码段将循环所有<div id="wrap#">并隐藏它们。

$("div[id^='wrap']").each(function() {
  var wrap = $(this);

  if(wrap.children("div[class^='test']:visible").length == 0) {
    wrap.hide();
  } else {
    wrap.show();
  }
});

如果您仍然希望{?1}}可见,如果根本没有测试(在标记中没有),您可以使用以下修改后的代码段:

<div id="wrap#">

没有令人信服的理由对课程编号(边缘情况除外)。您的编号使上述代码和CSS变得复杂。从$("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(); } }); 删除编号会更容易。 (您不需要它,因为您始终可以使用test:lt(index):gt(index):eq(index):first选择其中的一部分。

至于编号ID,这很好,因为每个id必须是唯一的。

答案 2 :(得分:0)

查看它们是否全部可见的更好方法是可见度计数与总计数相同。

$("#wrap1 div:visible").length == $("#wrap1 div").length

答案 3 :(得分:0)

jQuery("#wrap1").find("div").each(function()
   {
      if ($(this).is(':hidden'))
      {
      }
   }
);