我无法让JQuery的$()元素构造函数正常工作。以下工作正常(使用expect.js进行expect()
调用):
var p = $('<div id="1"><div id="2">middle div</div></div>');
expect(p.children('div')).not.to.be(undefined); //passes
expect(p.children('div').attr('id')).to.equal('2'); //passes
但以下不起作用
var p = $('<p id="1"><div id="2">middle div</div></p>');
expect(p.children('div')).not.to.be(undefined); //passes
expect(p.children('div').attr('id')).to.equal('2'); //fails
有关如何使其正常工作的任何提示?
答案 0 :(得分:3)
HTML标记错误。您不能将<div>
之类的块级元素放入<p>
元素中。这就是为什么HTML实际上(我认为这取决于浏览器)最有可能被解析为:
<p id="1"></p><div id="2">middle div</div>
或(在chrome中):
<p id="1"></p><div id="2">middle div</div><p></p>
您可以通过console.log(p);
答案 1 :(得分:1)
<div>
被弹出,因为<div>
内有<p>
无效。
答案 2 :(得分:1)
你应该试试这个:
expect($('#1').find('div').attr('id').to.equal('2');
编辑:Niko和The System是对的..虽然div不能在p中。