Javascript 为什么jquery也要克隆子元素?
假设我有以下代码:Javascript 为什么jquery也要克隆子元素?,javascript,jquery,Javascript,Jquery,假设我有以下代码: <ul> <li>1</li> <li>2</li> <li>3</li> </ul> 一, 二, 三, 现在当我这样做时,$(“ul”).clone(),它克隆完整的ul元素(也克隆其所有子元素)。 我只想克隆,不想克隆它的子对象 如何在jQuery中实现这一点 我知道使用纯JavaScript(使用cloneNode()),但我不能使用它,因为还需要执行其
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
- 一,
- 二,
- 三,
现在当我这样做时,$(“ul”).clone()
,它克隆完整的ul
元素(也克隆其所有子元素)。
我只想克隆
,不想克隆它的子对象
如何在jQuery中实现这一点
我知道使用纯JavaScript(使用
cloneNode()
),但我不能使用它,因为还需要执行其他方法。您可以清空元素:
$('ul').clone().empty();
使用.html(“”)
清空内容。请尝试以下操作:
$("ul").clone().html('');
jQuery方法创建元素的深度副本
描述:创建匹配元素集的深度副本
因此,使用jQuery,您只需要获得ul
你有两个选择:
$('ul').clone().empty()代码>
var simplel=$($('ul').get(0.cloneNode())代码>
给定的解决方案有两个问题
// Fetch the ul and detach its contents
var ul = $("ul");
var contents = ul.contents().detach();
// Do the clone, copying its data
var clone = ul.clone(true);
// Reattach the contents
ul.append(contents);
如果有多个元素,则在循环中执行此操作。因为克隆就是这样做的:。你看我也不明白吗?为什么您不能执行
$($('ul').get(0).cloneNode()
?如果您不想要任何子元素,只创建一个新的空ul
:$(')
要比克隆元素(包括其子元素)然后删除其子元素便宜得多,正如一些答案所建议的那样。为什么不呢?克隆意味着创建具有相同值的新实例,子对象
是其中一个值。根据定义,克隆将是一个深度副本。你想要一份深拷贝吗?只创建您需要的内容可能会更高效。如果您发现自己在生产代码中这样做,clone
首先可能是错误的方法。FWIW jQuery有一个空的方法