2013-03-07 62 views
0

好像不在的DOM被认为是隐藏的,而不管应用到这些元素的CSS元素可见如何检查,如果不是在DOM元素是用jQuery

例如,把下面的在Chrome控制台计算为false

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

有没有什么办法来检查,如果像上面的一个分离元件可见或不可见。我不只是想检查display css属性是block

+0

shoudl是 - '$(“

i am a div
”) 。.find( 'DIV')是( “:可见”)' – 2013-03-07 21:01:00

回答

1

这取决于你正在尝试做的,但最简单的事情是将其附加检查:

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

如果这个检查是望而却步适合你,你可以同时检查displayvisibility CSS检查它们分别不是nonehidden,并且hidden属性未设置。你也可以做一些类似设置position: fixed; top: 100%并做上述测试。

编辑:好像jQuery的隐藏检查:

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

所以你可以只摆脱二线那里做一个等效检查。

0

试试这个:

$('<div style="display: block;">i am a div</div>').css("display")!="none" 
1

Sure you can

var foo = $('<div style="display: block;">i am a div</div>'); 
foo.appendTo('body'); 

var vis = foo.is(":visible"); 

console.log(vis); 

foo.detach(); 

不知道为什么你会永远想尝试这一点,虽然。

0

如果一个元素没有连接到一个DOM,然后浏览器不把它当作可见,因为简单地把它没有父这可能会影响它的知名度也

相关问题