Javascript jquery$(';<;div>;';)对$(';<;div/>;&)

Javascript jquery$(';<;div>;';)对$(';<;div/>;&),javascript,jquery,Javascript,Jquery,可能重复: 以下哪一种是正确的方法: $('<div>') $(“”) 或 $(“”) 他们两个似乎都工作。是一种方法比另一种方法更正确,还是两者都有效?它们在jQuery中产生相同的结果。来自: 如果字符串作为参数传递给$(),jQuery将检查 字符串以查看它是否看起来像HTML(即,它在某处有) 在字符串中)。如果不是,则将该字符串解释为选择器 表达式,如上所述。但是如果字符串看起来是一个 在HTML代码段中,jQuery尝试创建新的DOM元素,如下所述 通过HTML

可能重复:

以下哪一种是正确的方法:

$('<div>') 
$(“”)

$(“”)

他们两个似乎都工作。是一种方法比另一种方法更正确,还是两者都有效?

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

来自:

如果字符串作为参数传递给$(),jQuery将检查 字符串以查看它是否看起来像HTML(即,它在某处有
) 在字符串中)。如果不是,则将该字符串解释为选择器 表达式,如上所述。但是如果字符串看起来是一个 在HTML代码段中,jQuery尝试创建新的DOM元素,如下所述 通过HTML。然后创建并返回一个jQuery对象,该对象引用 对这些要素进行分析。您可以在上执行任何常用的jQuery方法 此对象:

$(“

我的新文本”

”).appendTo('body');
如果 HTML比没有属性的单个标记更为复杂,就像在 在上面的示例中,元素的实际创建由 浏览器的innerHTML机制。在大多数情况下,jQuery会创建一个新的 元素,并将元素的innerHTML属性设置为 传入的HTML代码段。当参数只有一个标记时, 例如
$('')或$('');
或者,jQuery允许类似XML的标记语法(斜杠前有空格或没有空格):

<代码>$(''); 不能包含元素的标记可以快速关闭,也可以不快速关闭:

$('<img />');
$('<input>');
<代码>$(''); $('');
两种变体都会给出相同的结果,但是

$('<div />', {id:"myID",class:"mycssClass class2 clazzz",some-attribute: "value"});
$(“”,{id:“myID”,class:“mycssClass class2 clazzz”,某些属性:“value”});

$('<div id="myId" class="mycssClass class2 clazzz" some-attribute="value"></div>');
<代码>$('');
尽管它们产生的结果似乎相同,但基于使用情况,它们可能不会产生相同的结果。例如:

当jQuery解析
$(“”)
时,
标记将是
标记的子项,因此结果将是:


当jQuery解析
$('

')

时,

标记将是
标记的兄弟,因此结果将是:

我始终选择正确的html标记。我同意。第二个在我看来总是错误的。所以它们都适用于所有元素?是的。第二种形式是有效的XHTML/HTML4,第一种形式是HTML5,jQuery将以任何方式生成相同的输出。。。为什么不直接执行:$(“div”)?@cereallarceny这是一个选择器——OP要求创建新的jQuery对象/DOM元素。doctype实际上与此无关。jQuery只是使用正则表达式来查看是否传递了空标记。无论元素类型如何,正则表达式都将接受
(可能会有一些空白),如果匹配,它将使用
document.createElement
生成元素。避免对代码执行的操作产生误解是一个好主意。这是我看到的关于使用语法的唯一论点,现在我将坚持使用它。即使它在只执行一个元素时不适用,但在整个代码中保持一致仍然很好。
$('<a/>');
$('<img />');
$('<input>');
$('<div />', {id:"myID",class:"mycssClass class2 clazzz",some-attribute: "value"});
$('<div id="myId" class="mycssClass class2 clazzz" some-attribute="value"></div>');