.clone()和.html()之间有什么区别?

Jquery的.clone()和.html()函数有什么区别?

Jquery文档说明:

.clone()方法执行匹配元素集的深层副本,这意味着它复制匹配的元素及其所有后代元素和文本节点。

在HTML文档中,.html()可用于获取任何元素的内容。 如果选择器表达式与多个元素匹配,则只返回第一个匹配的HTML内容。

对我来说,这些似乎是可以互换的,那么是否会有另一个人使用的具体情况呢?

.clone()返回一个jQuery对象,而.html()返回一个字符串。

如果你想要一个jQuery对象的副本并使用.html()来获取字符串格式的jQuery对象的内部HTML,请使用.clone() 。 每种方法都有自己的目的( 和成本 )。

另外,正如sgroves指出的那样,“。 .clone()执行选择器找到的元素集的深层副本,而.html()仅[使用]第一个匹配的元素。”*


*虽然注意.html(newContent)将设置一匹配元素的内部HTML。 小提琴

另一个注意事项:(通常)“更快”选项是在进行DOM操作( JSPerf )时使用字符串而不是jQuery对象。 因此,如果您需要的是文本内容,我建议使用.html() 。 尽管如此: 每种方法都有自己的目的

以下是差异列表:

  1. .clone可用于多个选定元素,而.html()仅返回第一个元素的html。

  2. .clone返回一个jQuery对象,而.html返回一个字符串。

  3. .clone可以(如果指定)保留DOM元素的任何事件和数据.html不会。

  4. .clone复制所选元素及其所有后代,而.html只获取其后代。 换句话说,与DOM方法相比, .clone类似于.outerHTML,而.html更像是.innerHTML。

clone()方法将复制与复制的DOM元素关联的数据和事件,此方法返回目标的jQuery对象。 html()只是DOM的字符串表示,这意味着不会复制与该DOM部分相关的任何事件/数据,此方法只返回一个字符串。

编辑#2删除了关于clone()的评论和html()一样快,它实际上更慢。 下面的例子可以在Casey Falk的评论中看到。

从您在上面发布的引用句子回答是:

.clone()它复制匹配的元素以及它们的所有后代元素和文本节点。 意味着它选择选择器中的所有元素。

.html()只选择第一个元素。