由于这个问题仍未得到正确回答,但我在 Google 中的“单选按钮 onchange”排名很高,对于仍在寻找的任何人来说,这里都是一个合适的解决方案。
如果您使用 jQuery,只需使用Flavius Stef所述的jQuery属性选择器。
OP,尚不完全清楚您的代码的作用。让我们假设在您的代码中,您想将“隐藏”类添加到任何激活的单选按钮。
$("your selector here").change(function() {
$('input[name="' + this.name + '"]').removeClass("hidden");
$(this).addClass("hidden");
});
$(this)
请注意(jQuery 对象)和this
(DOM 对象)之间的区别。基本上,我从每个同名输入中删除“隐藏”类,然后将“隐藏”类添加到当前输入。
当然,我在这里假设您没有为页面上的不同输入使用重复的名称。另请注意,这仅适用于单选按钮,因为单选按钮“更改”事件仅在激活时触发,而不是在停用时触发。
在复选框和单选按钮上监听 onchange
就我而言,我想为活动的单选按钮和复选框添加一个“选中”类。由于复选框在选中和未选中时都会触发“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来设置“已检查”类 if .is(":checked")
is 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 事件时都要小心,因为当通过键盘导航激活输入时它不会触发。