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

Tim*_*ony 11 jquery jquery-selectors

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

$("<p/>").append("<div>something</div>").appendTo("body");
Run Code Online (Sandbox Code Playgroud)

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

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

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

Den*_*nis 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.
Run Code Online (Sandbox Code Playgroud)

序列化文档时,您最终会得到:

<body><p><div>something</div></p></body>
Run Code Online (Sandbox Code Playgroud)

它显示了包含其子元素的每个元素.


如果您的标记看起来像这样:<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");
Run Code Online (Sandbox Code Playgroud)


小智 6

这是一个功能,jQuery正确呈现标签.