更改复选框状态时的JQuery事件

时间:2012-02-23 20:07:37

标签: javascript jquery ajax

这是我的问题,我想检查使用JQuery创建一个已检查的所有复选框的数组。每次选中或取消选中复选框时,我都会执行此操作。所以我用这段代码做我想做的事:

$(document).ready(function(){
    $(":checkbox").change(function() {
        CBChange();
    });
});

function CBChange()
{
    $(":checkbox:checked").each(function() {
        alert("checked");
    });
}

问题是“我认为”在单击的复选框更改其状态之前执行此操作。因此,例如,如果我有四个复选框全部选中并且我取消选中一个,则警报消息将弹出四次,就像脚本执行之前设置复选框以取消选中一样。

我只需要一种方法来实现它。如果我们采用与上面相同的示例,我想要的结果是,对于剩余的复选框,该消息仅弹出3次,然后选中。

提前致谢, 我!

3 个答案:

答案 0 :(得分:1)

  

问题是“我认为”在单击的复选框更改其状态之前执行此操作。因此,如果我有四个复选框全部选中并且我取消选中一个,则警报消息将弹出四次。

你是什么意思“我想”?你试过的时候发生了什么?在状态更新后,应该触发更改事件,实际上这对我来说总是有用。因此,在您的示例中,如果检查了所有四个并且您取消选中一个警报应该显示三次。

以下是您的代码的小提琴:http://jsfiddle.net/nnnnnn/tMtwX/

或者这是另一个演示相同效果的演示,没有警告信息的烦恼:http://jsfiddle.net/nnnnnn/WnHBx/

或者,如果您在更改处理程序中说alert(this.checked);,您将看到刚刚更改的特定复选框的当前状态...

答案 1 :(得分:0)

制作包含所有已检查项目的数组

$(document).ready(function(){
    $(":checkbox").change(function(e) {
        var items=$(":checkbox:checked");
        console.log(items);
    });
});

Here是一个小提琴。

答案 2 :(得分:-2)

你有错误的选择器试试

    $(document).ready(function(){
    $("checkbox").change(function() {
        CBChange();
    });
});

function CBChange()
{
    $("checkbox:checked").each(function() {
        alert("checked");
    });
}