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

qwe*_*ymk 18 javascript jquery

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

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

$('<div>') 
Run Code Online (Sandbox Code Playgroud)

要么

$('<div />')
Run Code Online (Sandbox Code Playgroud)

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

Bla*_*ger 12

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

  • @cereallarceny这是一个选择器 - OP要求创建新的jQuery对象/ DOM元素. (4认同)
  • doctypes真的与它无关.jQuery只是使用正则表达式来查看是否传递了空标记.正则表达式将接受`<div>`,`<div />`或`<div> </ div>`*(可能有一些空格的容差)*无论元素类型如何,如果它匹配,它使用`document.createElement`生成元素. (2认同)

j08*_*691 11

来自文档:

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

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

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

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

$('<a href="http://jquery.com"></a>');
Run Code Online (Sandbox Code Playgroud)

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

$('<a/>');
Run Code Online (Sandbox Code Playgroud)

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

$('<img />');
$('<input>');
Run Code Online (Sandbox Code Playgroud)