$('<div>') 和 $('<div/>') 之间的区别是什么?

6

2
我认为第一个在旧版IE浏览器中会失败。 - SLaks
为什么不只使用 $('div') - SeinopSys
4
完全不同,它选择现有的元素。 - SLaks
3个回答

7
不,jQuery将把它们规范成完全相同的语句。
在较早的jQuery版本中,由于某种原因,<div>实际上比<div/>更快。我不知道现在是否仍然适用。 http://jsperf.com/jquery-constructor-performance 看起来这个“bug/feature”不再正确。

5
甚至
(是的,这个只会创建一个元素)都将触发 singleTag 正则表达式,从而使 jQuery 调用 document.createElement("div")。它根本没有被传递给任何 HTML 解析器。

如果下面的正则表达式返回 true,则会调用 document.createElement:

<div>, <div/>, <div></div><div/></div> (是的,这个只会创建一个元素)。
var rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;

+1,我之前不知道<div/></div>这种写法,但显然它可以匹配成功,因为\/?使得自闭合变成了可选项。 - Fabrício Matté

4

<div>是一个起始标签。 <div/>是一个自闭合标签。 然而,在这个上下文中,没有区别。


注:< 和 > 是用来表示尖括号“<”和“>”的转义字符。

1
自闭合标签在HTML中不存在。它们在HTML 5中被允许,以取悦那些无法放弃XHTML的人,但它们不会自动关闭。您不能在真正的HTML中说<div />并使其像XHTML粉丝期望的那样工作--解析器忽略斜杠,并将<div />视为<div> - cHao
好的,重新阅读规范后,我收回之前的说法。自闭合标签确实存在,但只适用于“外部元素”(MathML/SVG)和空元素(它们本来就没有结束标记)。看起来<div />实际上是无效的HTML。 - cHao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接