0

チェックボックスの値を配列に追加/削除するためのより良い方法があるかどうか疑問に思っています。indexOf()残念ながら、IE8 / 7をサポートする必要があるため、ECMAScript5を使用できません。

実用的な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

于 2013-01-11T14:50:10.610 に答える