在附加到DOM之前,如何知道jQuery节点是否可见?
如果一个元素附加到DOM,我们可以通过以下方式查询它在jQuery中是否可见:在附加到DOM之前,如何知道jQuery节点是否可见?,jquery,unit-testing,Jquery,Unit Testing,如果一个元素附加到DOM,我们可以通过以下方式查询它在jQuery中是否可见: > $('#element-id').is(':visible') true > $('#element-id').toggle(false).is(':visible') false > $('#element-id').toggle(true).is(':visible') true 但是如果我的元素还没有连接到DOM呢?如何检查它在连接时是否可见,而不是实际连接 未附加的元素总是将false
> $('#element-id').is(':visible')
true
> $('#element-id').toggle(false).is(':visible')
false
> $('#element-id').toggle(true).is(':visible')
true
但是如果我的元素还没有连接到DOM呢?如何检查它在连接时是否可见,而不是实际连接
未附加的元素总是将false
返回到.is(':visible')
,因为它显然还不是真正可见的:
> $('<div>').is(':visible')
false
> $('<div>').toggle(true).is(':visible')
false
$('').is(':visible')
假的
>$(“”).toggle(true).is(‘:可见’)
假的
我知道元素对切换的反应是因为它的样式:
> $('<div>').attr('style')
undefined
> $('<div>').toggle(true).attr('style')
'display: block;'
> $('<div>').toggle(false).attr('style')
'display: none;'
$('').attr('style')
未定义
>$('').toggle(true.attr('style'))
'显示:块;'
>$(“”).toggle(false).attr('style'))
'显示:无;'
但是手动检查style属性是脆弱的,因为不同的元素会附加不同的样式,这取决于它们是否可见,我必须进行字符串包含检查:
> $('<span>', {style: 'font-style:italic'}).toggle(true).attr('style')
'font-style: italic; display: inline;'
$('',{style:'font-style:italic'}).toggle(true.attr('style'))
字体风格:斜体;显示:内联;'
我之所以检查未附加的元素在附加到DOM时是否可见,而不是简单地附加它们,是因为我正在运行自动单元测试,其中的组件在测试期间对未连接到DOM的jQuery元素调用.toggle(is_visible)
这些组件来自一个框架,出于实际目的,我无法更改该框架,但我想知道它们是否通过了测试情况下可见的正确的