1

我有两个输入复选框,我想用 jQuery 选中/取消选中它们:

<input type="checkbox" name="user1" value="1" id="u1" onclick="loadUserCalendar(1)">
<input type="checkbox" name="user2" value="2" id="u2" onclick="loadUserCalendar(2)">

JavaScript 代码:

var list = new cookieList("calendar_users"); 
var users = list.items();
for (var i = 0; i < users.length; i++) {
    $('input[name="user' + users[i].substr(1,1) + '"]').attr('checked', true);
    console.log('substring: ' + users[i].substr(1,1));
    console.log('enabling user ' + users[i]);
}

var users包含这些值:u1,u2. 为了只获取用户 ID,我执行了一个子字符串,它可以让我得到正确的数字,如下面的控制台输出所示。

控制台输出:

substring: 1
enabling user u1
substring: 2 
enabling user u2 

我不知道,为什么在代码运行时未检查复选框。我在这里做错了什么?

编辑:由于兼容性原因,我正在使用 jQuery 1.4.4,这就是我使用的原因.attr()

4

5 回答 5

2

内联事件处理程序 ( onclick="loadUserCalendar(1)") 不是 jQuery 方式。您的 html 中不应包含任何内容。摆脱它们并添加到您的 jquery 中:

$(function() {
    $('form').on('click',':checkbox', function() {
        loadUserCalendar($(this).val());
    });
});

但也许你想要的是这样的:

$(function() {
    $('form').on('click',':checkbox', function() {
        $('form :checkbox').attr('checked','checked');
    });
});

jquery 1.ancient 版本:

$(function() {
    $('input[type=checkbox]').live('click', function() {
        // do things
    });
});
于 2013-07-05T15:48:47.490 回答
0

关于复选框的初始化,我建议如下:

$('input[type=checkbox]').each(function(index, box) {
    $(box).attr('checked', $.inArray($(box).attr("id"), users) != -1);
});
于 2013-07-05T16:21:24.097 回答
0

您使用的是什么版本的 jQuery?

你必须尝试类似的东西:

$('input[name="user' + users[i].substr(1,1) + '"]').attr('checked', 'checked');

或者

$('input[name="user' + users[i].substr(1,1) + '"]').prop('checked', 'checked');

第二个是jQuery 1.6+

于 2013-07-05T15:46:59.823 回答
0

当您想要检查某些内容时,您必须执行以下操作:

 $('.myCheckbox').attr('checked','checked');
于 2013-07-05T15:48:17.147 回答
0

如果您已经创建了复选框,动态地使用 jQuery on 方法,因为简单的函数将无法访问这些元素。

于 2013-07-05T15:48:33.517 回答