jQuery会自动关闭附加标签吗?例如$( “<P>”)</P>

时间:2012-03-30 19:28:16

标签: jquery jquery-selectors

我在一些代码中看到了这一点:

$("<p/>").append("<div>something</div>").appendTo("body");

并注意到它会自动关闭生成的HTML中的p标记:

<p><div>something</div></p>

我之前从未见过选择器语法$("<p/>")。这是错误(Chrome只是猜测它应该是什么)还是这是jQuery选择器语法的一个特性?

4 个答案:

答案 0 :(得分:8)

$函数严重超载,即使字符串有两个功能。如果字符串是CSS选择器,它将返回包含文档中匹配元素的对象。如果您使用<打开,则创建元素。但是,jQuery没有创建标签。元素属于DOM,标签属于HTML,它是DOM的序列化。

$("<p/>")  //Creates a p element
    .append("<div>something</div>") //inserts a child element, which is a div you created
                                    //containing the string "something"
    .appendTo("body"); //tags the newly created paragraph element, with its div child
                       //and inserts it into the DOM as a child of the body element.

序列化文档时,您将结束:

<body><p><div>something</div></p></body>

显示包含其子元素的每个元素。


如果您的标记如下所示:<p/><div>something</div>,那么pdiv元素就是兄弟。如果将它们附加到同一父母身上,就会发生这种情况:

//Use add to create a new element and add it to the jQuery collection object
//instead of appending it as a child to the p element.
$("<p/>").add("<div>something</div>").appendTo("body");

答案 1 :(得分:6)

它是一个功能,jQuery正确呈现标记。

答案 2 :(得分:4)

jQuery的功能看看当默认情况下你将它作为一个自闭项标签时会发生什么,比如链接

$("<link/>").append("<div>something</div>").appendTo("body");

生成

<link><div></div></link> 

这显然是错误的。但这就是被要求做的事情!

答案 3 :(得分:2)

<p/><p></p>

的捷径