Javascript 为什么$(“div:visible”在使用phantomjs的jasmine测试中找不到任何东西?

Javascript 为什么$(“div:visible”在使用phantomjs的jasmine测试中找不到任何东西?,javascript,jquery,jasmine,visible,Javascript,Jquery,Jasmine,Visible,Html代码: <div id="xxx"><div>aaa</div></div> 如果这些代码在浏览器上运行,它将输出1。(现场演示:) 但当我用phantomjs在jasmine测试中运行它时: it("should find the visible nodes", function () { var node = $("<div><div>aaa</div></div>"); v

Html代码:

<div id="xxx"><div>aaa</div></div>
如果这些代码在浏览器上运行,它将输出
1
。(现场演示:)

但当我用phantomjs在jasmine测试中运行它时:

it("should find the visible nodes", function () {
   var node = $("<div><div>aaa</div></div>");
   var found = node.find("div:visible");
   console.log(found);
   expect(found.length).toEqual(1);
});
it(“应该找到可见节点”),函数(){
变量节点=$(“aaa”);
var found=node.find(“div:visible”);
console.log(找到);
期望值(发现长度)。toEqual(1);
});

测试失败,找到了
。长度
0
。为什么以及如何修复它?

您没有将任何内容附加到dom,它都存在于内存中,因此您将获得0

试着做一些类似的事情:

$('body').append(node);
var found = node.find("div:visible");
...
参见文件中的bin:

如果元素占用文档中的空间,则认为它们是可见的。可见元素的宽度或高度大于零

可见性为:隐藏或不透明度为0的元素视为可见,因为它们仍会占用布局中的空间

不在文档中的元素被认为是隐藏的;jQuery无法知道它们在附加到文档时是否可见,因为它取决于适用的样式。


要修改规范,需要将元素附加到文档中,如果未将节点添加到不可见的页面中,则文档应具有
高度
宽度

,请参见
$('body').append(node);
var found = node.find("div:visible");
...