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

标签 javascript jquery html dom

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

关于如何让它正常工作的任何提示?

最佳答案

HTML 标记错误。您不能放置像 <div> 这样的 block 级元素进入 <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); 轻松验证这一点

关于javascript - 使用 $() 构造函数在 JQuery 中创建嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15128441/

相关文章:

javascript - 如何等待 $firebaseArray 数据

javascript - bxSlider Uncaught TypeError 未定义不是函数

jquery - 需要根据 CheckBox 选中状态在切换 DiV 中设置 CssClass

javascript - 根据屏幕分辨率更改内联最小高度

javascript - 将背景图像换成背景 gif

javascript - tr 的背景颜色不会使用 jquery 改变

javascript - 使用异步执行上下文为 Office.js Javascript Word 加载项添加子例程

jquery - 动态工具提示

html - 操纵文本位置 CSS/HTML

html - 在插入数据库之前而不是在输出时转义 HTML 是个坏主意吗?