Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在附加到DOM之前,如何知道jQuery节点是否可见?_Jquery_Unit Testing - Fatal编程技术网

在附加到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

如果一个元素附加到DOM,我们可以通过以下方式查询它在jQuery中是否可见:

> $('#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)

这些组件来自一个框架,出于实际目的,我无法更改该框架,但我想知道它们是否通过了测试情况下可见的正确的