jquery $('<div>')vs $('<div>')</div> </div>

时间:2012-05-01 18:48:04

标签: javascript jquery

  

可能重复:
  $('<element>') vs $('<element />') in jQuery

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

$('<div>') 

$('<div />')

他们似乎都工作。一种方式比另一种方式更正确,还是它们都能正常工作?

4 个答案:

答案 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>');
相关问题