似乎不在 DOM 中的元素被认为是隐藏的,不管 CSS 应用于这些元素
例如,将以下内容放在 Chrome 控制台中的计算结果为false
:
$('<div style="display: block;">i am a div</div>').is(":visible")
有什么方法可以检查像上面这样的分离元素是否可见。我不只是想检查display
css 属性是block
.
似乎不在 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();
如果此检查对您来说是禁止的,您可以同时检查display
和visibility
CSS 以分别检查它们是否不是none
和hidden
,并且该hidden
属性未设置。您也可以执行类似设置position: fixed; top: 100%
的操作并执行上述测试。
编辑:似乎 jQuery 的隐藏检查是:
jQuery.css( elem, "display" ) === "none"
|| !jQuery.contains( elem.ownerDocument, elem )
所以你可以去掉那里的第二行来做一个等效的检查。
var foo = $('<div style="display: block;">i am a div</div>');
foo.appendTo('body');
var vis = foo.is(":visible");
console.log(vis);
foo.detach();
不过,不知道你为什么想尝试这个。
尝试这个:
$('<div style="display: block;">i am a div</div>').css("display")!="none"
如果一个元素未附加到 DOM,则浏览器不会将其视为可见,因为简单地说它没有可能影响其可见性的父元素