2012-11-22 99 views
2

我有一个复选框列表。每个复选框有.change(function(){alert('xyz')})。每个复选框都有一个类abc
我还有一个名为'ALL'的复选框。当'ALL'复选框被改变时,它改变所有其他复选框的状态。

我想更改'ALL'复选框以触发所有其他复选框的更改(.change(...))。但由于其他复选框的状态是以编程方式完成的,因此它本身不起作用。
我试过使用$('.abc').change()触发所有复选框的更改事件,但它不起作用。
我在做什么错,以及如何实现手头的任务?
顺便说一句,如果我做$('#id_of_a_specific_checkbox').change()它很好。


谢谢。jQuery触发类更改?

UPDATE的我有什么
例子: http://jsfiddle.net/ZqJvc/

这几乎是我在大项目......而在短期例如,它的工作原理:/
但在实际项目它不起作用。唯一的区别是,在真实的项目中,我有很多复选框。奇怪......我想它回到了调试器。谢谢。

UPDATE
的Chrome完全崩溃之后......我重新启动浏览器,它只是曾在上面的例子。对不起,浪费我们的时间。再次感谢,伙计们。

+1

使用触发器()jQuery的功能。 .trigger('change') – Meliborn

+1

你不能做'$(“。abc”)。each(function(){$(this).change();});' – mattytommo

+0

为什么你需要触发change事件所有的复选框?如果你试图改变prop()会完成的状态。无论如何:'$('。abc')。each(function(){$(this).trigger('change');});' – adeneo

回答

2

要设置与类名为.abc所有复选框为真时,所有的复选框改变使用

$("input[name=ALL]").change(function() { 

    $(".abc").prop("checked", $(this).prop("checked")); 
    $(".abc").trigger("change"); 
}); 

小提琴here

+0

谢谢。但只会改变复选框的状态,但不会触发其更改事件。 – thedp

+1

@thedp更新回答 – Bruno

+0

当别人在问题的评论中指出它,这是其中一个选项,我应该工作...而且它的确如此,在一个简化的例子中http://jsfiddle.net/9zYN8/但是没有我的实际项目......我想我会分解它并寻找问题背后的原因。再次感谢。 – thedp