这看起来应该相当简单 - 但我找不到合适的选择器
根据文档( 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/