2012-09-15 75 views
4

嗨我想知道是否有可以由其他代碼而不是由用戶觸發複選框的事件...jquery複選框更改事件

例如,

http://jsfiddle.net/DC3EH/

對於「選擇全部」複選框,它會自動切換也將「選擇」類切換行的背景色。

我試過「改變」和「點擊」,只有用戶觸發。

我註釋了一些代碼...順便說一句我想有很多複選框來切換某些類型的複選框,所以我想避免大量的「.closest('tr')。addClass('selected') ;」等等

回答

0

我不確定這是你需要什麼,但我想到的是,所有<tr>必須更改爲通過選中「選擇所有」複選框。試試這個http://jsfiddle.net/DC3EH/5/

+0

在或完整版本的某些行檢查未檢查的根據它們的屬性...所以最接近(」 tr')將被使用... –

0

你試過觸發點擊事件嗎?

.trigger("click") // for each checkbox 

例子:http://jsfiddle.net/ELTRd/1/

+0

該組是「Choose All」複選框的反轉版本...也是黃色的行着色被倒轉了... –

0

如果您綁定到更改事件,您可以觸發jQuery的單擊事件將選中複選框,並在轉火change事件:

$(document).ready(function(){ 
    $('#check_all').click(function(event) { 
     $('[name^="checkbox"]').trigger("click"); 
    }); 

    $('[name^="checkbox"]').change(function(event) { 
     console.log('a'); 
     if ($(this).is(":checked")) { 
      $(this).closest('tr').addClass('selected'); 
     } 
     else { 
      $(this).closest('tr').removeClass('selected'); 
     } 
    });  
});​ 

更新小提示:http://jsfiddle.net/DC3EH/19/

我切換到更改事件而不是click事件的原因是jQuery如何處理觸發事件。當您觸發點擊時,它會在您更改複選框的狀態之前調用您的事件處理程序。綁定到更改可確保您的事件不會在狀態更改後才被調用。

+0

沒有一個複選框似乎在小提琴中工作... –

+0

對於我來說在鉻和FF上工作得很好。 –

+0

它似乎並沒有在IE8中工作。同樣在Chrome和FF中,「全選」複選框僅反轉當前選擇...應該打開或關閉所有其他複選框,具體取決於「全選」複選框狀態。 –