2013-02-28 182 views
1

我无法让JQuery的$()元素构造函数正常工作。下面的工作权(使用的expect()电话expect.js):

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 

如何得到这个工作的权利任何提示吗?

回答

3

HTML标记错误。您不能将像<div>这样的块级元素放入<p>元素中。这就是为什么HTML实际上是(我认为这取决于浏览器)最有可能被解析为:

<p id="1"></p><div id="2">middle div</div> 

或(铬):

<p id="1"></p><div id="2">middle div</div><p></p> 

您可以通过console.log(p);

+0

修好了!谢谢。以下是可以包含以供参考的快速参考:http://risd.generic.cx/containment.html – 2013-02-28 06:11:23

1

<div>正被弹出,因为<p>内部无效<div>

1
容易验证这一点

你应该试试这个:

expect($('#1').find('div').attr('id').to.equal('2'); 

编辑:尼科和系统是正确的..一个div CA尽管如此,我们并不在意。