2012-02-23 45 views
0

这是我的问题,我想检查所有选中的复选框的JQuery数组。我每次执行此操作都会选中或取消选中复选框。所以我用这个代码做什么,我想:复选框状态发生变化时的JQuery事件

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

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

的问题是:“我认为”,这是执行已经点击的复选框改变其状态之前。因此,例如,如果我有四个复选框全部选中,并且未选中一个,则警报消息将弹出四次,就像在将该复选框设置为未选中之前执行该脚本一样。

我只是需要一种方法来实现它。如果我们采用与上面相同的示例,我想要的结果是该消息仅弹出3次,其余复选框已经过检查。

在此先感谢, 我!

+0

您正在使用哪种浏览器? Ajax如何与你的问题联系起来? – nnnnnn 2012-02-23 21:10:02

回答

-2

你有错误的选择尝试

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

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

不工作,我不认为问题来自选择器。警报消息按预期弹出,但它就像没有考虑到我刚刚做出的更改。 – maniak 2012-02-23 20:23:44

+1

':checkbox'是选择所有复选框元素的有效选择器。 http://api.jquery.com/checkbox-selector/'checkbox'然而是无效的,因为没有标记名为“checkbox”的元素。复选框是输入元素。 – 2012-02-23 20:24:11

+0

对不起,双重职位不是真的用于这个论坛,并没有看到下面的帖子正确的意见 – maniak 2012-02-23 20:26:26

0

为了让所有的数组检查的项目

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

Here是小提琴。

1

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

你是什么意思“我认为”?当你尝试时发生了什么?在状态更新后,应该触发更改事件,实际上这是它始终为我工作的方式。因此,在您的示例中,如果全部四个选中,并且取消选中一个,那么警报应显示三次。

这里是你的代码提琴工作正常:http://jsfiddle.net/nnnnnn/tMtwX/

还是这里的显示效果相同另一个演示没有警报消息的烦恼:http://jsfiddle.net/nnnnnn/WnHBx/

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