jquery - 删除元素后简单的按钮功能停止
问题描述
我是 jQuery 新手,我正在尝试创建一组简单的测试行,并能够通过单击添加按钮来创建新行,并通过单击相应的“删除”文本来删除每一行。出于某种原因,每当删除第一行时,我就无法再添加新行。
这是HTML:
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='all'>
<button class='add'>Add</button>
<div class='row'>hi - <span class='del'>delete</span></div>
</div>
和 jQuery:
var row, add, rows;
$(document).ready(function(){
row = $('.row'); // problem? because it's not a clone?
add = $('.add');
rows = $('.row');
add.on("click", function(){
row.clone().appendTo($('#all')); // problem? because it's now gone?
rows = $('.row');
updateRows();
});
});
function updateRows() {
rows.on("click", ".del", function(){
$(this).parent().fadeOut(1000, function(){
$(this).remove();
});
rows = $('.row');
});
}
如果有帮助,我还制作了CodePen 演示。所以我的问题是,为什么删除第一行后“添加”按钮停止工作?我想知道一旦第一行被删除,它就不能被追加,因为变量被删除了,如果我是对的,你怎么能创建一个即使被删除也能保留的变量克隆(如果你知道我的意思)?
感谢您在这里的任何帮助 - 任何解释将不胜感激。
解决方案
您可以复制该行的 outerHTML 以使其始终可用。仅使用$(".row").first().html()
复制内部 HTML(因此不包括该class=row
部分)。
这给了你:
var row = $(".row").first().outerHTML(); // store first row
$('.add').on("click", function() {
$("#all").append(row);
});
复制 outerHTML 取自:https ://stackoverflow.com/a/4180972/2181514
当您对 del 按钮使用事件委托时,您只需要调用一次,给出:
(function($) {
$.fn.outerHTML = function() {
return $(this).clone().wrap('<div></div>').parent().html();
};
})(jQuery);
$(document).ready(function() {
var row = $(".row").first().outerHTML(); // store first row
$('.add').on("click", function() {
$("#all").append(row);
});
$(document).on("click", ".row>.del", function() {
$(this).closest(".row").fadeOut(1000, function() {
$(this).remove();
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='all'>
<button class='add'>Add</button>
<div class='row'>hi - <span class='del'>delete</span></div>
</div>
更新代码笔: https ://codepen.io/anon/pen/qLQqJm
推荐阅读
- r - 如何在 R 中指定 KS 测试的位置、比例和形状参数?
- powershell - 来自输入的变量
- c++ - 这是关于递归跟踪的解释,我无法理解其中的一些逻辑。请帮我解释一下逻辑
- flutter - 按钮名称未显示在应用栏中,而标题谷歌地图可见
- d3.js - 如何按年份累积 d3.rollup 数据
- python-3.x - SQL Alchemy 枚举验证与验证函数冲突
- c# - 如何在 ZOHO CRM 中制作公式字段?
- sql - SQL Select FOR XML PATH - 将排序和连接字符串与递增计数器组合
- android - 在 Square.Retrofit 上,如何设置 CallAdapter.Factory 以便 Retrofit 使用我的 CallAdapter
>> - python - 从一个不规则纬度网格重新网格化到另一个不规则纬度网格