jQuery .append()函数

时间:2010-05-12 15:41:41

标签: jquery

为什么this

$("#mydiv").append("<ul>");
$("#mydiv").append("<li>Hello</li>");
$("#mydiv").append("</ul>");
alert($("#mydiv").html());

产生

<ul></ul><li>Hello</li>

而不是

<ul><li>Hello</li></ul>

谢谢!

3 个答案:

答案 0 :(得分:7)

Append()追加DOM节点,而不是HTML标签(即,它是一个附加对象,而不是附加的字符串)。

当您追加<ul>时,您正在创建一个包含开始和结束标记的整个UL节点。 </ul>调用将被忽略。

答案 1 :(得分:2)

因为您无法附加未完成的HTML片段,所以您总是附加元素。对于你的情况,你做了

$("#mydiv").append("<ul></ul>");
$("#mydiv ul").append("<li>Hello</li>");

$("#mydiv").append("<ul><li>Hello</li></ul>");

答案 2 :(得分:2)

因为浏览器需要在每次追加后(重新)构建其DOM。它无法知道结束标记将在稍后出现,并且开始标记本身无效,因此纠错会在此情况下启动,在此情况下会关闭未关闭的元素。

这是innerHtml和依赖它的东西(例如jQuery的追加方法)不可靠的原因之一,应该尽可能避免。