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

存储在数据库中的值是所选复选框的按位,因此如果选中 Some text 3 和 Some text 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 回答