jQuery 检测可见但隐藏的元素

标签 jquery jquery-selectors hidden visible

这看起来应该相当简单 - 但我找不到合适的选择器

根据文档( http://api.jquery.com/hidden-selector/http://api.jquery.com/visible-selector/ )...

由于多种原因,元素可以被视为隐藏:

祖先元素被隐藏,因此该元素不会显示在页面上。

我想要检测的是“这个元素是可见的,但包含在隐藏的父元素中”。即,如果我使父元素可见,则该元素也将可见。

最佳答案

如果这是您常用的选择器,请制作您自己的选择器:) 这是一个示例:

jQuery.expr[':'].hiddenByParent = function(a) { 
   return jQuery(a).is(':hidden') && jQuery(a).css('display') != 'none'; 
};

您可以像这样使用它,测试标记:

<div style="display: none" id="parent">
  <div>
      <div id="child">Test</div>
  </div>
</div>
​

使用示例:

$("div:hiddenByParent").length;​​​​​​​​​​​​​​​​​​ // "2" (plain div + child match)
$("#child").is(":hiddenByParent"); // true

或者,您可以使用 .filter()功能如下:

$('selector').filter(function() {
  return $(this).is(':hidden') && $(this).css('display') != 'none';
}

关于jQuery 检测可见但隐藏的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2553534/

相关文章:

javascript - 在 html 代码中使用 javascript 变量

javascript - 日期格式 JavaScript

jQuery:选择选中的复选框

django - 如何删除 django 模板中的面包屑和品牌?

javascript - 通过使用 anchor 标记中的 data-id 属性,使用 jquery 将值传递到模态弹出窗口

javascript - Rails 4 - 嵌套表单和选择选择

javascript - 将多列 html 表转换为单列以实现移动友好布局

jQuery + CSS + IE 问题 : hidden elements appear briefly when page is loading

vba - Word VBA 字体。如果选择在表中并且选择很大,则隐藏属性变得不可读

html - 使不可见文本可选择