jQuery,从克隆元素

时间:2018-01-23 11:45:04

标签: jquery

尝试使用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);

任何人都可以提供帮助。 非常感谢! (虽然可能重复)

2 个答案:

答案 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);