1

同じ名前のチェックボックスがいくつかあり、値は2の累乗です。

<input type=checkbox name=mycheckbox value=1>Some text 1
<input type=checkbox name=mycheckbox value=2>Some text 2
<input type=checkbox name=mycheckbox value=4>Some text 3
<input type=checkbox name=mycheckbox value=8>Some text 4
<input type=checkbox name=mycheckbox value=16>Some text 5
<input type=checkbox name=mycheckbox value=32>Some text 6

データベースに格納されている値は、選択したチェックボックスのビットごとのORであるため、[一部のテキスト3]と[一部のテキスト6]をオンにすると、データベースの値はになります32 | 4 = 36

Ajax呼び出しを使用して、データベースからこの値をロードします。番号に基づいて適切なチェックボックスをチェックするためにjQueryを使用する最も簡単または最良の方法は何でしょうか?

私はスクリプトを作成することに慣れており、次のようにアプローチします。

for (i = 1; i <= 32; i*=2)
   if ((ajaxValue & i) == i)

しかし、理想的には、jQueryはそれをはるかに簡単にし、チェックボックスを値でチェックすることができます。

4

2 に答える 2

2

YOUR_VALUEデータベースから来ています。

$('input[name=mycheckbox][value="'+ YOUR_VALUE +'"]').prop('checked', true);

あなたの更新の質問によると

これを試して:

var x = [];

$('input[name=mycheckbox]').each(function() {
    x.push(this.value);
});
var len = x.length,
    target = 36; // this is the value you get from ajax (integer)

for (i = 0; i <= len - 1; i++) {
    for (j = len - 1; j > i; j--) {
        var value = x[j + i] | x[i];
        if ( value === target) {
            $('input[name=mycheckbox][value="' + x[i] + '"], 
               input[name=mycheckbox][value="' + x[j + i] + '"]')
           .prop('checked', true);
        }
    }
}

デモ

于 2012-05-07T16:01:40.003 に答える
0
$(function () {
  $('input[name=mycheckbox]').each(function () {
    // Your code there like if ($(this).val() ....
    if ($(this).val() == someValue) $(this).attr('checked', 'checked'); // Example of make the checkbox checked
  });
});
于 2012-05-07T15:57:29.290 に答える