.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()
。 尽管如此: 每种方法都有自己的目的 。
以下是差异列表:
-
.clone
可用于多个选定元素,而.html()
仅返回第一个元素的html。 -
.clone
返回一个jQuery对象,而.html
返回一个字符串。 -
.clone
可以(如果指定)保留DOM元素的任何事件和数据 。.html
不会。 -
.clone
复制所选元素及其所有后代,而.html
只获取其后代。 换句话说,与DOM方法相比,.clone
类似于.outerHTML,而.html
更像是.innerHTML。
clone()方法将复制与复制的DOM元素关联的数据和事件,此方法返回目标的jQuery对象。 html()只是DOM的字符串表示,这意味着不会复制与该DOM部分相关的任何事件/数据,此方法只返回一个字符串。
编辑#2删除了关于clone()的评论和html()一样快,它实际上更慢。 下面的例子可以在Casey Falk的评论中看到。
从您在上面发布的引用句子回答是:
.clone()
它复制匹配的元素以及它们的所有后代元素和文本节点。 意味着它选择选择器中的所有元素。
而.html()
只选择第一个元素。