2

我正在尝试在单击复选框时测试其状态。

我的问题是它总是报告为真实的,因为它报告了更改事件发生之后而不是之前的状态。

无论如何我可以在更改之前进行测试。

使用 jQuery 的当前代码 - 类“包”的所有复选框:

$(".package").click(function(){
    if($(this).is(":checked")){
        alert($(this).attr("checked"));
    }
});

即使选择了当前未选中的复选框,这也始终返回 true。

编辑:好吧,似乎有一些旧的 js 干扰了这个过程,在清理之后,点击功能确实有效。谢谢大家。

4

3 回答 3

2

在复选框上使用onchange事件不是跨浏览器(你好 IE!是的,即使使用 jQuery)。

以下作品:

$('.package').click(function() {
    console.log(this.checked) // There is no need for jQuery here
})

选中复选框时记录“true”,取消选中时记录“false”。

说真的,使用$(this).attr('checked')or$(this).is(':checked')只是 jQueryception。

于 2012-04-04T11:46:29.607 回答
1

click 事件在实际文本框更改发生之前触发,您需要订阅 change 事件:

$(".package").change(function(){
    if($(this).is(":checked")){
        alert($(this).attr("checked"));
    }
});

编辑:尝试查询实际的 Javascript 对象本身,应该可以

$(".package").change(function(){
    if(this.checked){
        alert(this.checked);
    }
});
于 2012-04-04T11:40:26.227 回答
1

您可以改用更改事件,这样您就可以确定之前的检查状态总是与您现在阅读的相反

$(".package").change(function() {
    alert($(this).attr("checked"));
});
于 2012-04-04T11:41:37.280 回答