javascript - 从 javascript 对象中删除数组

标签 javascript jquery arrays checkbox

上下文

我正在尝试实现一项功能,以便当用户单击表格中的复选框时,复选框的属性 valuedata-title 应该是作为新的键值对数组元素存储在名为 selected 的 JS 对象字面量中。

如果用户第二次点击同一个复选框,则应删除相应的数组元素。

问题

第一次单击复选框时,会按预期在对象 selected 中创建一个数组。

但是,当第二次点击同一个复选框时,不会删除相应的数组,而是添加一个新的(重复的)

代码

var selected = {items:[]};     
$('#table').on('click', 'input[type="checkbox"]', function() {
    var found = false;
    $.each(selected.items, function(i, val) {
        if (val.key == $(this).attr("value")) {
            selected.items.splice(i ,1);
            found = true;
            return false; //step out of each()
        }
    });

    if (found == false) {
        selected.items.push({key: $(this).attr("value"), value: $(this).attr("data-title")});
    }

    console.log(selected);
});

最佳答案

each 中的 this 上下文错误。它不再是点击处理程序中的元素

尝试

$('#table').on('click', 'input[type="checkbox"]', function() {
    var found = false;
    var value = $(this).val();// store value from `this` before entering `each`
    $.each(selected.items, function(i, val) {
        if (val.key == value) {
            selected.items.splice(i ,1);
            found = true;
            return false; //step out of each()
        }
    });
    ....

关于javascript - 从 javascript 对象中删除数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296044/

相关文章:

javascript - angular4模式实验室

javascript - 将新的服务器数据传递给react.js组件

javascript - Jquery 函数无法正确阻止输入字母

arrays - 使用 Elixir 绘制数组的深度映射

c++ - 以下类型的声明是否完全有效?

javascript - Angular 订阅将对象推送到数组

javascript - 行数可变时的动态数据表

javascript - 从项目外部导入文件

jquery 在点击外部某处时关闭自动建议列表

javascript - jquery脏记录,想要jquery ui模式