在删除克隆元素内部的div时遇到困难。运行该代码段,并注意即使已删除“请勿克隆我”部分,该部分也会被追加。
let myhtml = `<div style="border: 1px solid black;" class="mycontainer">
clone me
<div class="noClone">
do not clone me
</div>
<button class="clonebtn"> clone it </button>
</div>`
$(document).ready(function() {
let content = $(myhtml);
$('.row').append(content);
$('.row').on('click', '.clonebtn', function() {
let container = $(this).closest('.mycontainer');
let clonedContainer = container.clone();
clonedContainer.remove('.noClone');
$('.row').append(clonedContainer);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="row">
</div>
</div>
摆弄小提琴
答案 0 :(得分:1)
您需要使用.find()
来查找父div内的所有元素,并删除noClone
类。
$(selector).remove(anotherselector)
仅从anotherselector
返回的数组中删除与selector
匹配的所有元素。给remove()
函数提供的选择器仅应用于jQuery集合中包含的元素,而不应用于这些元素的子元素。与$(selector).filter(anotherselector).remove()
类似。
考虑以下HTML和jQuery代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
Foo
<div id="bar">Bar</div>
</div>
<script>
$('#foo').remove('#bar');
</script>
您可能希望将带有id
“ foo”的div内带有id
“ bar”的div删除,但事实并非如此。为什么? $('#foo')
选择器返回一个只有一项的数组:div
,其中id
为“ foo”。 jQuery尝试filter
遍历数组并找到与$('#bar')
选择器匹配的元素。没有找到元素,什么也不会发生。
但是,以下选择器将删除带有“ {bar”的id
的div。
$('div').remove('#bar');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
Foo
<div id="bar">Bar</div>
</div>
<script>
$('div').remove('#bar');
</script>
$('div')
选择器将返回一个包含页面上所有div
的数组。 jQuery对所有div
进行过滤,以找到与div
选择器匹配的$('#bar')
(具有“ {bar”的id
)。找到一个,将其删除。
let myhtml = `<div style="border: 1px solid black;" class="mycontainer">
clone me
<div class="noClone">
do not clone me
</div>
<button class="clonebtn"> clone it </button>
</div>`;
$(document).ready(function() {
let content = $(myhtml);
$('.row').append(content);
$('.row').on('click', '.clonebtn', function() {
let container = $(this).closest('.mycontainer');
let clonedContainer = container.clone();
clonedContainer.find('.noClone').remove();
$('.row').append(clonedContainer);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="row">
</div>
</div>
答案 1 :(得分:0)
let myhtml = `<div style="border: 1px solid black;" class="mycontainer">
clone me
<div class="noClone">
do not clone me
</div>
<button class="clonebtn"> clone it </button>
</div>`
$(document).ready(function() {
let content = $(myhtml);
$('.row').append(content);
$('.row').on('click', '.clonebtn', function() {
let container = $(this).closest('.mycontainer');
let clonedContainer = container.clone();
clonedContainer.find('.noClone').remove();
$('.row').append(clonedContainer);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="row">
</div>
</div>