0

我想知道是否有更好的方法将复选框值添加/删除到数组中。遗憾的是我不能使用 ECMAScript 5 indexOf(),因为我需要支持 IE8/7。

这是一个有效的 jsfiddle 示例:http: //jsfiddle.net/puyQr/

该方法的作用是:

/**
 * If a user clicks onto the checkbox, the value of the value attribute is
 * only added to the array when the value not yet exists. However, if
 * the value already exists, the value is removed.
 */

var values = [];
jQuery(':checkbox').on('click', function(){     
    var index = jQuery.inArray(this.value, values);
    if(index === -1) {
        values.push(this.value);
    } else {
        values.splice(index, 1);
    }
});
4

2 回答 2

2

从复选框获取值的另一种方法:

var values = jQuery(':checkbox:checked').map(function(){
    return $(this).val();
}).get();

演示

于 2013-01-11T14:49:45.950 回答
2

是的,使用对象文字。

var values = {};
jQuery(':checkbox').on('click', function () {     
    if (this.value in values && values[this.value] === 1) {
        values[this.value] = 0;
    } else {
        values[this.value] = 1;
    }
});

这里

如果你以后想要它作为一个数组,转换它是一件简单的事情,使用for..in和检查1在保留key之前。

于 2013-01-11T14:50:10.610 回答