更改单选按钮更改时的单元类

时间:2011-01-07 11:39:54

标签: jquery radio-button

非常感谢此帖子中的帮助 - Click td, select radio button in jQuery

但是现在我遇到麻烦,它不会改变单元格的类,即使我已经在jQuery中绑定了'change'触发器,如下所示:

    $("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);

});

希望这是有道理的。如果单击单选按钮,或使用键盘在它们之间移动,单元格的类就会改变。但是,如果通过单击单元格触发它,则不会更改类:(

由于

2 个答案:

答案 0 :(得分: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作为有效值。但是,由于大多数(如果不是全部)浏览器将该属性解析为布尔值,其中空或非存在意味着为false,而任何其他值意味着为真,它仍然可以工作但我个人更喜欢遵循规范。

答案 1 :(得分:1)

尝试使用:

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

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

});

似乎有效:JS Fiddle demo