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

Posted

技术标签:

【中文标题】使用 jQuery 检查所有 div 是不是被隐藏【英文标题】:Use jQuery to check if all div's are hidden使用 jQuery 检查所有 div 是否被隐藏 【发布时间】:2010-11-16 09:49:18 【问题描述】:

我将如何检查是否所有带有类测试的 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>

更新: 感谢大家的快速回答,我得到了它的工作。他们都非常乐于助人。

【问题讨论】:

有人可以编辑问题标题吗?我正在搜索“所有具有同一类的 div”,并​​且几乎通过了这个。赞成的问题。 【参考方案1】:

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

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

【讨论】:

您也可以将if ( $("div.test:visible").length === 0) 行更改为if (!$("div.test:visible").length)【参考方案2】:

这个 sn-p 将循环所有 &lt;div id="wrap#"&gt; 并在测试被隐藏时隐藏它们。

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

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

如果您仍然希望在根本没有测试的情况下保持&lt;div id="wrap#"&gt; 可见(如标记中的无),您可以使用以下修改后的 sn-p:

$("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 变得复杂。从test 中删除编号会更容易。 (您不需要它,因为您始终可以使用 :lt(index):gt(index):eq(index):first:last 选择其中的一个子集。

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

【讨论】:

请注意,如果没有匹配类的 div,这也会隐藏包装器 div。不确定这是否是所需的行为。 @tvanfosson: 从技术上讲,如果标记中没有div.test,则与没有可见的div.test 相同。我很确定这是理想的行为。 如果您只希望有 div 但它们都被隐藏时的行为,您可以检查以确保 :hidden 计数与 :visible 计数相同。 @Andrew -- 我不确定。 “没有结果”和“所有结果都被隐藏”之间存在语义差异。我并不是说你的答案是错误的,只是指出行为不仅仅适用于所有隐藏的情况。 @tvanfosson: 也许,无论如何,比较 :hidden 长度和 :visible 长度是行不通的,因为如果没有元素,两者都会返回 0。 【参考方案3】:

查看它们是否都可见的更好方法是将可见性计数与总计数相同。

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

【讨论】:

您需要通过适当的班级测试来证明这一点。根据 OP,如果“testN”分类的 DIV 被隐藏,即使“标题”DIV 不是,包装器也应该被隐藏。【参考方案4】:
jQuery("#wrap1").find("div").each(function()
   
      if ($(this).is(':hidden'))
      
      
   
);

【讨论】:

以上是关于使用 jQuery 检查所有 div 是不是被隐藏的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jquery检查一个元素是不是隐藏[重复]

使用 .hide() jquery 后 Div 重新出现

在 jQuery 验证中忽略所有隐藏的 div 但不是一个

是否可以打印被 jQuery 的“slideUp”功能隐藏的 DIV

检查所有输入是不是为空

jQuery实现鼠标点击Div区域外隐藏Div