12
var $div = $('<div class="error">').appendTo($('#header'));

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

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

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

var $div = $('<div class="error">').appendTo($('#header'));
4

4 回答 4

15

尽管如果您不使用结束标签(或至少自关闭标签)可能会起作用,但您应该添加一个结束标签(自关闭)(如前所述,为了跨平台兼容性):

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

$('<a href="http://jquery.com"></a>');

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

$('<a/>');

不能包含元素的标签可能会被快速关闭:

$('<img />');
$('<input>');

这是 jQuery 创建元素的方式:

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


顺便提一句。您还可以将数据作为第二个参数传递:

$('<div />', {'class': 'error', text: 'Error-Homie!'})
于 2011-07-02T08:21:55.030 回答
1

你需要结束标签:http ://api.jquery.com/appendTo/例如

$('<p>Test</p>').appendTo('.inner');

它也应该是

.appendTo('#header');

并不是

.appendTo($('#header'));
于 2011-07-02T08:20:03.893 回答
0

你可以这样做

$('<div/>',{class:'error'}).html('Error-Homie!').appendTo($('#header'));
于 2011-07-02T08:20:54.220 回答
0

您总是需要结束标记才能拥有正确的 html。

但事实是,大多数浏览器都会忽略这些错误。但是,没有理由懒惰,您不应该依赖浏览器的容忍度来让您的代码正常工作。这种容忍度是为了能够显示有一些错误的站点,而不是小心故意不正确的代码。

于 2011-07-02T08:22:41.550 回答