这两个中的哪一个是正确的方法:
$('<div>')
或
$('<div />')
他们似乎都工作。一种方式比另一种方式更正确,还是它们都能正常工作?
答案 0 :(得分:12)
它们在jQuery中产生相同的结果。
答案 1 :(得分:11)
来自docs:
如果一个字符串作为参数传递给$(),jQuery会检查 字符串,以查看它是否看起来像HTML(即,它在某处有
<tag ... >
在字符串内)。如果不是,则将字符串解释为选择器 表达,如上所述。但如果字符串看起来是一个 HTML片段,jQuery尝试按照描述创建新的DOM元素 通过HTML。然后创建并返回引用的jQuery对象 对这些元素。您可以执行任何常用的jQuery方法 这个对象:
$('<p id="test">My <em>new</em> text</p>').appendTo('body');
如果 HTML比没有属性的单个标签更复杂,就像它一样 在上面的例子中,元素的实际创建是由处理的 浏览器的innerHTML机制。在大多数情况下,jQuery创建一个新的 element并将元素的innerHTML属性设置为 传入的HTML片段。当参数具有单个标记时, 例如
$('<img />') or $('<a></a>')
,jQuery使用创建元素 本机JavaScript createElement()函数。
为确保跨平台兼容性,代码段必须格式正确。可以包含其他元素的标记应与结束标记配对:
$('<a href="http://jquery.com"></a>');
或者,jQuery允许类似XML的标记语法(在斜杠之前有或没有空格):
$('<a/>');
不能包含元素的标签可以快速关闭或不关闭:
$('<img />');
$('<input>');
答案 2 :(得分:1)
虽然它们似乎产生相同的结果,但根据用途它们可能不会产生相同的结果。例如:
当jQuery解析$('<div> <p>')
时,<p>
标记将是<div>
标记的子,因此结果为:<div> <p></p> </div>
当jQuery解析$('<div/> <p/>')
时,<p/>
标记将是<div/>
标记的兄弟,因此结果为:{{1} }
答案 3 :(得分:0)
两种变体都给你相同的结果,但是这个
$('<div />', {id:"myID",class:"mycssClass class2 clazzz",some-attribute: "value"});
比
更好,更易读$('<div id="myId" class="mycssClass class2 clazzz" some-attribute="value"></div>');