非常感谢此帖子中的帮助 - 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);
});
希望这是有道理的。如果单击单选按钮,或使用键盘在它们之间移动,单元格的类就会改变。但是,如果通过单击单元格触发它,则不会更改类:(
由于
答案 0 :(得分:2)
更改元素的属性时,click
或change
事件都不会触发。所以你必须手动触发它。此外,我更喜欢尽可能地链接,在这种情况下,我们可以使用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。