这两种方法中的哪一种是正确的方法:
$('<div>')
或者
$('<div />')
它们似乎都有效。一种方式比另一种方式更正确,还是它们都总是有效?
这两种方法中的哪一种是正确的方法:
$('<div>')
或者
$('<div />')
它们似乎都有效。一种方式比另一种方式更正确,还是它们都总是有效?
它们在 jQuery 中产生相同的结果。
从文档:
如果一个字符串作为参数传递给 $(),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>');
尽管它们似乎产生相同的结果,但根据用途,它们可能不会产生相同的结果。例如:
在 jQuery parse$('<div> <p>')
时,<p>
标签将是标签的子标签<div>
,因此结果将是:<div> <p></p> </div>
而当 jQuery parse$('<div/> <p/>')
时,<p/>
标签将是标签的兄弟,<div/>
所以结果将是:<div></div> <p></p>
两种变体都给你相同的结果,但这
$('<div />', {id:"myID",class:"mycssClass class2 clazzz",some-attribute: "value"});
更好,更具可读性
$('<div id="myId" class="mycssClass class2 clazzz" some-attribute="value"></div>');