由于这个问题仍然没有得到正确的回答,但在谷歌搜索中排名相当高,所以这里为仍在寻找答案的人提供一个正确的解决方案。
如果您正在使用jQuery,只需使用jQuery的属性选择器,如Flavius Stef所指出的那样。
OP,你的代码并不完全清楚它的作用。假设在你的代码中,你想将“hidden”类添加到任何选中的单选按钮上。
$("your selector here").change(function() {
$('input[name="' + this.name + '"]').removeClass("hidden");
$(this).addClass("hidden");
});
请注意
$(this)
(jQuery对象)和
this
(DOM对象)之间的区别。我基本上是从具有相同名称的每个输入中删除“hidden”类,然后将“hidden”类添加到当前输入。
当然,我假设您在页面上不使用重复的名称来表示不同的输入。还请注意,这仅适用于单选按钮,因为单选按钮“更改”事件仅在激活时触发,而不在取消激活时触发。
在复选框和单选按钮上监听onchange事件
在我的情况下,我想要将“checked”类添加到活动单选按钮和复选框中。由于复选框在选中和取消选中时都会触发“onchange”事件,因此我需要一些额外的代码。
$('input[type="radio"]').change(function() {
$('input[name="' + this.name + '"]').removeClass("checked");
$(this).addClass("checked");
});
$('input[type="checkbox"]').change(function() {
$(this).toggleClass("checked", ($(this).is(":checked")));
});
后一个函数使用toggleClass来设置“checked”类,如果.is(":checked")
是true
。
或者你可能想将这两个函数结合成类似以下的形式:
$('input[type="radio"], input[type="checkbox"]').change(function() {
if(this.type == "radio")
$('input[name="' + this.name + '"]').removeClass("checked");
$(this).toggleClass("checked", ($(this).is(":checked")));
});
无论哪种方式,当监听onclick事件时一定要小心,因为当通过键盘导航激活输入时,该事件不会触发。