删除动态填充的<仅在数组包含奇数项时起作用
remove dynamically populated <li> only works when the array contains odd number of items
项目实例:http://jsfiddle.net/k3buckuc/
enterItem = []
itemNumber = 0
// mark item as checked and add delete functionality
function check() {
$('#itemsListed').on('click', 'li', function() {
$(this).toggleClass('checked');
$(this).append('<hr />');
$(this).append('<button class="trash">X</button>');
$(this).not('.checked').find('hr').remove();
$(this).not('.checked').find('button').remove();
// enable trash or delete functionality individual list items
$('.trash').on('click', function() {
$(this).closest('li').remove();
});
});
}
只有当itemNumber为奇数或enterItem包含奇数项时才正确执行
查看检查我如何将项推入数组和我的增量技术的提琴
这是因为您不断地绑定同一个事件。每次添加项时,将为click事件绑定另一个处理程序。
当您添加了偶数个项目时,就会添加偶数个事件处理程序。当您单击某项时,第二个处理程序将撤消第一个处理程序所做的操作。
例如,当您有十个项目时,事件处理程序将被调用十次。由于最终结果与调用事件处理程序0次相同,因此看起来没有发生任何事情。
只需绑定一次事件处理程序,而不是每次添加项时都绑定。
就这样做:
// function check() {
$('#itemsListed').on('click', 'li', function() {
$(this).toggleClass('checked');
$(this).append('<hr />');
$(this).append('<button class="trash">X</button>');
$(this).not('.checked').find('hr').remove();
$(this).not('.checked').find('button').remove();
// enable trash or delete functionality individual list items
$('.trash').on('click', function() {
$(this).closest('li').remove();
});
});
// }
相关文章:
- JavaScript 自包含函数数组访问自我索引
- 如何对姓氏进行排序,格式化电话号码,并返回一个包含对象数组值的字符串
- AngularJS:如何使用ng repeat来显示父数组中包含的数组的所有元素
- 使用包含参数数组的数组调用函数,而不是仅列出数组
- 仅包含某些数组值的单个弹出窗口.JavaScript
- 当项目包含在数组中时,在 ng-repeat 上以角度添加类
- 数组包含其他数组中的所有元素
- 输出一个结果数组,其中包含给定数组的唯一元素的分组计数
- Parse.com正在查询包含指针数组的对象,该数组无法使用include
- Javascript 数组包含/包含子数组
- 如何递归地移除包含空数组的嵌套对象
- 如何在搜索条件中包含子数组
- 如何确定对象是否包含在数组中
- 如何检查包含子数组的数组的大小?
- 如何获取对象中包含的数组的长度
- Assert数组包含Chai数组
- 访问模型中包含的数组中的字段
- 在包含对象数组的JSON对象上循环
- angular 2-如何迭代JSON响应,该响应包含一个包含对象数组的对象
- 递归删除嵌套 json 对象中包含空数组的对象