2011-07-02 53 views
12
var $div = $('<div class="error">').appendTo($('#header')); 

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

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

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

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

是的,你当然需要。 –

+0

如果你想有效的HTML,那么你是的! – Ibu

+0

SEEL也[$( ' ')VS $ jQuery中(' ')](http://stackoverflow.com/q/9675487/673991) –

回答

15

虽然它可能工作,如果你不使用结束标签(或至少自关闭标签),you should add a closing tag (self-close)(如提到的,对于跨平台兼容性):

为确保跨平台兼容性,代码片段必须格式良好。

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

或者,jQuery的允许类似于XML的标记语法(带或不带斜线前的空间):其可以包含其他元素的标签应以结束标记配对

$('<a/>'); 

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

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

这是jQuery的是如何创建的元素:

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


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

$('<div />', {'class': 'error', text: 'Error-Homie!'}) 
0

你也许可以做这样的

$('<div/>',{class:'error'}).html('Error-Homie!').appendTo($('#header')); 
0

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

但是,大多数浏览器都会让这样的错误滑落。尽管这并不是懒惰的理由,但你不应该依赖浏览器容忍你的代码工作。这种容忍能够显示出现一些错误的网站,而不是故意不正确的代码。

相关问题