javascript - 如何使用 jQuery 检查不在 DOM 中的元素是否可见

标签 javascript jquery html dom visible

看起来不在 DOM 中的元素被认为是隐藏的,无论应用于这些元素的 CSS 是什么

例如,将以下内容放入 Chrome 控制台中,结果为 false:

$('<div style="display: block;">i am a div</div>').is(":visible")

有什么方法可以检查像上面这样的分离元素是否可见。我不仅仅是想检查 display css 属性是否 block

最佳答案

这取决于您想要做什么,但最简单的事情是将其附加到检查:

var $div = $("<div>");
$div.appendTo("body").is(":visible");
$div.detach();

如果您无法进行此检查,则可以检查 displayvisibility CSS,以检查它们是否为 nonehidden 分别,并且未设置 hidden 属性。您还可以执行类似 set position:fixed; 的操作top: 100% 并进行上述测试。

编辑:似乎 jQuery 的隐藏检查是:

jQuery.css( elem, "display" ) === "none"
|| !jQuery.contains( elem.ownerDocument, elem )

所以你可以去掉第二行来进行等效的检查。

关于javascript - 如何使用 jQuery 检查不在 DOM 中的元素是否可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15281583/

相关文章:

php - 如何通过 AJAX 从 PHP 文件获取多个响应?

javascript - 无法动态更改图像

html - bootstrap-toggle 复选框未显示为切换

javascript - 从 JQuery 调用函数 - 更好的方法

javascript - 将 XML 转换为字符串并附加到页面

javascript - 有没有办法阻止滑动事件从子级传播到父级?

javascript - Javascript 中的简单 GeoJSON 转换

jquery - 居中对齐面板并使用 bootstrap 和 css 更改其标题和主体颜色

显示 UI 的 HTML 和 CSS 问题

html - 响应式设计 - 列不在 Div 标签内