通过选中和取消选中复选框来添加和删除数组中的值
Adding and removing values from array by checking and unchecking checkboxes
以下代码在选中复选框时将复选框值添加到数组中。如何更改此设置,以便在取消选中复选框时从数组中删除复选框的值?
var departments = [];
$("input[name='department_pk[]']").change(function() {
$("input[name='department_pk[]']:checked").each(function(i){
departments[i] = $(this).val();
});
});
问题是您没有从数组中删除以前选择的项。假设您现在已经在数组中选择了5个项目,您有索引0到4的数据,那么您现在取消选择2个项目。您的每个循环都将重置索引0到2,但索引3和4仍然存在于数组中。这就是问题所在。
一个更好的解决方案是使用.map()创建一个新的数组
var departments = [];
$("input[name='department_pk[]']").change(function () {
departments = $("input[name='department_pk[]']:checked").map(function (i) {
return $(this).val();
}).get();
});
在添加新元素之前,我会先清除数组。
var departments = [];
$("input[name='department_pk[]']").change(function() {
departments = [];
$("input[name='department_pk[]']:checked").each(function(i){
departments[i] = $(this).val();
});
});
check this..
var departments = [];
$("input[name='department_pk[]']").change(function() {
$("input[name='department_pk[]']").each(function(i){
if(jQuery(this).is(":checked")) {
departments[i] = $(this).val();
} else {
departments[i] = 0;
}
});
});
这类方法有效,但map()更准确:
if($(this).is(':checked')) {
departments.push($(this).val());
} else {
departments.pop($(this).val());
}
相关文章:
- Mongoose-在更新中删除数组元素
- 在特定索引处剥离/删除数组中的值
- Framework7:使用swipeout删除数组中的项
- Javascript删除数组中某个位置之后的项
- 通过选中和取消选中复选框来添加和删除数组中的值
- 编写删除数组并添加到列表的函数
- Javascript - 删除数组中的重复值
- 在 Kineticjs 中删除数组中的组
- 如何根据数组内容添加/删除数组中的元素
- 用于删除数组中的零的Javascript函数代码
- Javascript-仅使用pop()方法删除数组中的负值
- 删除数组元素并将它们添加回原来的位置
- 如果一个键匹配,如何删除数组元素
- 无法使用拼接删除数组中的元素
- 如何从ko.computed中删除数组项
- 删除数组中的重复项,为什么此代码不起作用
- 使用另一个数组按索引删除数组中的对象
- 在 jquery 中,如何通过索引[“键”] 或值删除数组元素
- 使用 Lodash 删除数组中的元素
- 按索引删除数组元素