尝试使用jQuery从具有子项的克隆元素中删除具有特定类的所有选择器。 原始标记:
<div id="el">
<div class="remove">remove from clone</div>
<div class="remain">remain in clone</div>
<div class="remove">remove from clone</div>
<div class="remain">remain in clone</div>
<div class="remove">remove from clone</div>
<div class="remain">remain in clone</div>
</div>
克隆版本应如下所示:
<div id="el">
<div class="remain">remain in clone</div>
<div class="remain">remain in clone</div>
<div class="remain">remain in clone</div>
</div>
jQuery代码(不适用于我的目的):
var clone = $('#el').clone();
clone = $(clone).remove('.remove');
clone = clone.html();
console.log(clone);
当我登录以查看克隆中是否存在删除元素时,它会输出正确的数字:
console.log($(clone).find('.remove').length);
任何人都可以提供帮助。 非常感谢! (虽然可能重复)
答案 0 :(得分:3)
您对remove()
的使用并不完全正确,因为您提供的选择器用于过滤当前的元素集,而不是在其中找到。
要达到您的要求,您需要分别使用find()
然后remove()
,如下所示:
var $clone = $('#el').clone();
$clone.find('.remove').remove();
var clone = $clone.html();
console.log(clone);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="el">
<div class="remove">remove from clone</div>
<div class="remain">remain in clone</div>
<div class="remove">remove from clone</div>
<div class="remain">remain in clone</div>
<div class="remove">remove from clone</div>
<div class="remain">remain in clone</div>
</div>
答案 1 :(得分:1)
问题是$(clone).remove('.remove');
如果克隆元素具有类remove
您需要使用find()
,因为该类嵌套在元素
var clone = $('#el').clone();
clone.find('.remove').remove();
clone = clone.html();
console.log(clone);