使用开始标记与自闭标签创建空元素

Luk*_*ure 13 jquery

在jQuery中,这有什么区别:

$('<div>').appendTo('body');
Run Code Online (Sandbox Code Playgroud)

还有这个:

$('<div />').appendTo('body');
Run Code Online (Sandbox Code Playgroud)

我一直认为它是"自我关闭"的方式,但我遇到了第一种方法,在一些生产代码中使用没有错误.这有可能导致问题,或者这是一种可以接受的做法吗?

Guf*_*ffa 12

文件说:

当参数具有单个标记(例如$('<img />')或$('<a> </a>')时,jQuery使用本机JavaScript createElement()函数创建元素.

它还说:

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

因此,表格$('<div>')显然也有效,但它没有记录.从文档中可以清楚地看出,意图是需要结束标记的标记应该具有该结束标记,或者是自闭合的.

我会坚持使用已记录的版本,因为这不太可能成为未来版本中突破性变化的受害者.

<rant>
jQuery库习惯于在单个函数调用中尽可能多地放入(参见最近on添加的一个例子),所以当你使用非函数时,他们会发明一些新东西.自闭标签......
</ rant>


Vis*_*ioN 6

不,这$("<div>")$("<div />")不会导致问题.

证明是这样的,如果我们转到jQuery源代码,我们可以看到,如果选择器具有单一标记语法,<...>则使用此正则表达式解析选择器:

rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/
Run Code Online (Sandbox Code Playgroud)

其中只有符号部分用于createElement和关闭斜杠可以是可选的.