18

可能重复:
jQuery 中的 $('<element>') 与 $('<element />')

这两种方法中的哪一种是正确的方法:

$('<div>') 

或者

$('<div />')

它们似乎都有效。一种方式比另一种方式更正确,还是它们都总是有效?

4

4 回答 4

12

它们在 jQuery 中产生相同的结果。

于 2012-05-01T18:49:24.183 回答
11

文档

如果一个字符串作为参数传递给 $(),jQuery 会检查该字符串以查看它是否看起来像 HTML(即,它<tag ... >在字符串中的某个位置)。如果不是,则字符串被解释为选择器表达式,如上所述。但是如果字符串看起来是一个 HTML 片段,jQuery 会尝试按照 HTML 的描述创建新的 DOM 元素。然后创建并返回一个引用这些元素的 jQuery 对象。你可以在这个对象上执行任何常用的 jQuery 方法:

$('<p id="test">My <em>new</em> text</p>').appendTo('body'); 

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

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

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

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

$('<a/>');

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

$('<img />');
$('<input>');
于 2012-05-01T18:54:31.213 回答
1

尽管它们似乎产生相同的结果,但根据用途,它们可能不会产生相同的结果。例如:

在 jQuery parse$('<div> <p>')时,<p>标签将是标签的子标签<div>,因此结果将是:<div> <p></p> </div>

而当 jQuery parse$('<div/> <p/>')时,<p/>标签将是标签的兄弟<div/>所以结果将是:<div></div> <p></p>

于 2012-05-01T19:22:33.177 回答
0

两种变体都给你相同的结果,但这

$('<div />', {id:"myID",class:"mycssClass class2 clazzz",some-attribute: "value"});

更好,更具可读性

$('<div id="myId" class="mycssClass class2 clazzz" some-attribute="value"></div>');
于 2012-05-01T18:56:18.743 回答