Jquery 创建带有开始标记和自动关闭标记的空元素

Jquery 创建带有开始标记和自动关闭标记的空元素,jquery,Jquery,在jQuery中,这两者之间有什么区别吗: $('<div>').appendTo('body'); $('').appendTo('body'); 这是: $('<div />').appendTo('body'); $('').appendTo('body'); 我一直认为这是一种“自动关闭”的方式,但我发现第一种方式在一些生产代码中使用时没有出现错误。这有可能会导致问题,或者这是一种可接受的做法吗?语法不会导致问题,只要后面没有任何东西 $("<div

在jQuery中,这两者之间有什么区别吗:

$('<div>').appendTo('body');
$('').appendTo('body');
这是:

$('<div />').appendTo('body');
$('').appendTo('body');

我一直认为这是一种“自动关闭”的方式,但我发现第一种方式在一些生产代码中使用时没有出现错误。这有可能会导致问题,或者这是一种可接受的做法吗?

语法不会导致问题,只要后面没有任何东西

$("<div>") // Ok!
$("<div>foobar") // Not Ok!
$("<div><p>") // Not Ok!
$(“”)/好的!
$(“foobar”)//不好!
$(“”)//不正常!
有关参考信息,请参见上面的说明:

当参数具有单个标记时,例如$('')或 $(“”),jQuery使用本机JavaScript创建元素 createElement()函数

它还说:

不能包含元素的标记可以快速关闭,也可以不快速关闭

因此,
$(“”)
形式显然也可以使用,但它没有文档记录。从文档中可以清楚地看到,需要结束标记的标记应该具有该结束标记,或者是自结束标记

我会坚持使用文档化版本,因为这不太可能成为未来版本中破坏性更改的受害者


jQuery库习惯于在单个函数调用中放入尽可能多的内容(例如,请参阅最近的加法中的
),因此,当您使用非自动关闭标记时,他们不会发明新的内容……

否。此
$(“”)
或此
$(“”)
都不会导致问题

证明是这样的,如果我们转到,我们可以看到,对于具有单标记语法的选择器,
它使用以下正则表达式解析选择器:

rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/
rsingleTag=/^(?:)$/

其中只有符号部分用于
createElement
,并且斜杠可以是可选的。

答案不错,但在查看文档后,我认为即使它有效,也可能不是最佳做法。