2012-11-22 60 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