2011-01-07 80 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