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