我有一张每行都有radio
的表格。我希望为selected
设置tr
的课程selected radio
。
所以我这样做了:
$(":radio[name='grp']").on("change", function() {
$("#tbl1").find("tr.selected, tr:has(:radio:checked)").toggleClass("selected");
});
当您从底部到顶部开始检查radios
时,效果很好。但是,如果你从顶部到底部开始,它可以工作一次,那么它就不会工作一次,依此类推。
我可以在没有find
功能的情况下隔离代码很有效:
$(":radio[name='grp2']").on("change", function() {
$("#tbl2 tr.selected, #tbl2 tr:has(:radio:checked)").toggleClass("selected");
});
Here there is a fiddle for you to test it
这里发生了什么?
更新:我还注意到问题出在find
方法上,因为当它工作时,它总是会返回一个长度为2的jQuery对象。 #39;工作,返回长度为1.但是,如果我用分隔的句子中的两个find
,它们都返回长度为1且来自不同的元素。
答案 0 :(得分:2)
:radio
已被弃用,您可以在此处看到http://api.jquery.com/category/deprecated/
您应该使用input[type=radio]
来获取单选按钮
使用input[type=radio]
完美无缺
答案 1 :(得分:0)
以下是您需要做的事情 -
$(":radio[name='grp']").on("change", function() {
$("#tbl1").find("tr").removeClass("selected");
$(this).parents("tr").addClass("selected");
});
对于每个更改,您从所有行中删除所选类,然后将该类应用于相关单选按钮的父tr。通过切换,每次运行时都会打开和关闭课程,这不是你想要的。
答案 2 :(得分:-1)
$("input[name='grp']")
$("input[name='grp2']")