使用$()构造函数在JQuery中创建嵌套元素

时间:2013-02-28 05:54:22

标签: javascript jquery html dom

我无法让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

有关如何使其正常工作的任何提示?

3 个答案:

答案 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中。