jQuery:创建新元素时,我需要结束标记吗?

and*_*ick 12 jquery element append new-operator end-tag

var $div = $('<div class="error">').appendTo($('#header'));
Run Code Online (Sandbox Code Playgroud)

在创建新元素并将其添加到DOM时,您是否需要结束标记?为什么或者为什么不?如果我将内容放入我正在创建的标签中,我是否只需要结束标记?像这样:

var $div = $('<div class="error"> Error-Homie! </div>').appendTo($('#header'));
Run Code Online (Sandbox Code Playgroud)

或者我可以创建一个包含内容的元素,但是省略结束标记?好?坏?

var $div = $('<div class="error">').appendTo($('#header'));
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 15

虽然如果你不使用结束标记(或者至少自我关闭标记)它可能有用,你应该添加一个结束标记(自我关闭)(如上所述,用于跨平台兼容性):

为确保跨平台兼容性,代码段必须格式正确.可以包含其他元素的标记应与结束标记配对:

$('<a href="http://jquery.com"></a>');
Run Code Online (Sandbox Code Playgroud)

或者,jQuery允许类似XML的标记语法(在斜杠之前有或没有空格):

$('<a/>');
Run Code Online (Sandbox Code Playgroud)

不能包含元素的标签可以快速关闭或不关闭:

$('<img />');
$('<input>');
Run Code Online (Sandbox Code Playgroud)

这就是jQuery创建元素的方式:

如果HTML比没有属性的单个标记更复杂,就像在上面的示例中那样,元素的实际创建由浏览器的innerHTML机制处理.在大多数情况下,jQuery创建一个新元素并将元素的innerHTML属性设置为传入的HTML片段.当参数具有单个标记(例如$('<img />')or)时$('<a></a>'),jQuery使用本机JavaScript createElement()函数创建元素.


顺便说一句.您也可以将数据作为第二个参数传递:

$('<div />', {'class': 'error', text: 'Error-Homie!'})
Run Code Online (Sandbox Code Playgroud)