2011-01-07 57 views
0

巨大的幫助表示感謝,在這個線程 - Click td, select radio button in jQuery更換電池級改變

但現在我有麻煩,它不會改變類細胞,儘管我已經綁定了「改變'jQuery觸發器如下:

$("td input[type=radio]").bind('change click', function() { 

    $('td').removeClass('selected'); 
    $(this).parent('td').addClass('selected'); 

}); 

$("td").click(function() { 

    $('input:radio', this).attr('checked', true); 

}); 

希望是有道理的。如果您單擊單選按鈕,或使用鍵盤在它們之間移動,則單元格的類更改得很好。不過,如果你觸發此通過點擊單元格不會更改類:(

感謝

+1

如果上一個問題的答案有幫助,你應該接受一個答案。 – 2011-01-07 11:42:02

+1

我試過了,但是我還沒有達到8分鐘的時間限制,對不起! (2分鐘去) – Nick 2011-01-07 11:42:37

回答

2

無論是clickchange當你改變一個元素的屬性時,事件會觸發,所以你必須手動觸發它,並且我更願意儘可能地鏈接,在這種情況下,我們可以使用siblings()函數離子。顧名思義,它會選擇所有的兄弟姐妹(在你的情況下,所有其他<td>元素的選擇類)的當前元素。

在這裏你去:

$("td input:radio").bind('change click', function(){ 
    $(this).parent('td').addClass('selected').siblings('.selected').removeClass('selected'); 
}); 

$("td").click(function() { 
    $('input:radio', this).attr('checked', 'checked').trigger('change'); 
}); 

另外,根據HTML規範,該checked屬性只有checked作爲有效值。然而,由於大多數(如果不是全部的話)瀏覽器將該屬性解析爲布爾值,其中空或不存在意味着假和任何其他值意味着真,但它仍然會工作,但我個人更喜歡遵循規範。

1

嘗試使用:

$("td input:radio").bind('change click', function() { 

    $('td.selected').removeClass('selected'); 
    $(this).parent('td').addClass('selected'); 

}); 

看來工作:JS Fiddle demo

+0

非常感謝(和JS小提琴網站,非常有用!),但它仍然不適合我,嗯 - 必須是一些有衝突的代碼!將研究它。 – Nick 2011-01-07 11:47:17