javascript - 如何停止 JavaScript 元素在点击时清除所有内容
问题描述
单击“添加更多”时产生的第一个删除工作正常,但del
之后产生的元素会删除页面上存在的所有内容。有人可以帮我吗,也许有问题ele
,我对JS没有太多经验
重现步骤 :
单击添加更多,然后单击上一个添加更多创建的下一个添加更多。
点击最后一个del
它会删除所有内容,而不是非常删除
DIV
$(function() {
$(".btn-copy").on('click', function() {
var ele = $(this).closest('.example-2').clone(true);
ele.find('input').val('')
if (ele.find('button').length<2) {
let btn = document.createElement("button");
btn.innerHTML = "Delete";
btn.onclick = (e) => {
e.preventDefault()
ele.remove()
}
ele[0].appendChild(btn);
}
$(this).closest('.example-2').after(ele);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-header">
<h5 class="card-title">Add Class</h5>
</div>
<div class="card-body">
<form action="#">
<div class="example-2 form-group row">
<!--<label class="col-form-label col-md-2">Input Addons</label>-->
<div class="col-xs-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Class Name</span>
</div>
<input class="form-control" type="text">
<div class="input-group-append">
<button class="btn-copy btn btn-primary" type="button">Add More</button>
</div>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-xs-2">
<button class="btn btn-primary" type="button">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
解决方案
问题在于使用.clone()
您在哪里克隆了最新的克隆元素,这迫使您创建一个 if 语句以防止创建多个删除按钮。但这也不允许您在克隆一定数量的节点后执行 if 语句中的内容。
您也不能在 if 语句之外使用 btn 变量。
解决方案是始终克隆第一个example-2
元素,这样我们就可以跳过 if 语句的使用,并允许自由使用 btn 变量。
我添加了一个额外的 div#wrapper
来使用,因此每次都可以复制find('div').first()
相同的元素。example-2
片段
$(function() {
$(".btn-copy").on('click', function() {
var ele = $('#wrapper').find('div').first().clone(true);
ele.find('input').val('');
let btn = document.createElement("button");
btn.innerHTML = "Delete";
ele[0].appendChild(btn);
btn.onclick = (e) => { ele.remove() };
$(this).closest('.example-2').after(ele);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
<div class="example-2 form-group row" style="margin-top:15px">
<div class="col-xs-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">Class Name</span>
</div>
<input class="form-control" type="text">
<div class="input-group-append">
<button class="btn-copy btn btn-primary" type="button">Add More</button>
</div>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-xs-2">
<button class="btn btn-primary" type="button" style="margin-top:30px">Submit</button>
</div>
</div>
</div>
推荐阅读
- batch-file - 批处理文件 - TASKKILL /FI "WINDOW TITLE ..." 不工作
- fullcalendar - 月视图中的半角事件?
- angular - 角度:更改选择选项
- python - 当前时间等于另一个时间时如何使用函数:Python
- azure - 我们可以订阅电子邮件 ID 或单元号码作为 Azure 事件中心/通知中心的订阅者吗?
- javascript - 从 html 输入元素获取本地文件路径
- python - 谷歌日历 API 403 错误
- xaml - UWP 在 PHP 中包含/需要 XAML
- ruby-on-rails - Ruby 字符串不超过 n 个字符
- python - 对数据帧进行子集化以与 fmin 一起使用会产生意外错误