javascript - 在 jQuery 中使用单选按钮切换类

标签 javascript jquery forms

我有一组单选按钮,当我点击一个单选按钮时,我希望标签改变颜色或其他任何东西。但是当我点击另一个单选按钮时,颜色消失了。因此我有这样的东西:

jQuery('label').mouseup(function(){
   jQuery(this).prev().attr('checked', 'checked');
   jQuery('input').next().removeClass('selected');
   jQuery('input:checked').next().addClass('selected');

});

如果你需要看一些html:

<input type="radio" id="radio1" name="myRadio" value="option-1" />
<label for="radio1">Label 1</label>


<input type="radio" id="radio2" name="myRadio" value="option-2" />
<label for="radio2">Label 2</label>

这首先从所有标签中删除“选定”类,然后仅重新应用于选中的标签。

它有效且简单,但我认为这可能不是最有效的方法。我想 javascript 正在遍历每个输入元素并使用比必要更多的资源。

我很好奇是否有人知道更有效地执行此操作的通用方法。我似乎经常在我的 jQuery 代码中做这种事情。顺便说一句,过去 3 个月左右我一直在使用 jQuery。

最佳答案

我认为有几件事值得一提。

点击 <label>将自动更改 <input> 的值.您不需要设置 checked attr 手动,因此可以绑定(bind)到 change而是 radio 上的事件。这也将允许键盘事件选择/取消选择 radio ,并且在 radio 值发生变化时起作用,而不仅仅是当有人将鼠标悬停在标签上时。

此外,您可以将整个 radio 输入集合保存在它自己的变量中,以便以后引用它们时不必再次搜索 DOM。

建议代码(带 jsfiddle preview )

var $radios = jQuery('input[type=radio]');
$radios.change(function() {
   $radios.next().removeClass('selected');
   $radios.filter(':checked').next().addClass('selected');
});

关于javascript - 在 jQuery 中使用单选按钮切换类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2876917/

相关文章:

javascript - 想要使用clearInterval停止setInterval,但无济于事

html - 移动设备(iPhone、iPad)没有为按钮显示正确的 CSS

jquery - Meteor:我应该如何构建表单

javascript - Google 图表和 Uncaught Error : Invalid JSON string:

javascript - 无法使用systemjs构建Angular 4项目

javascript - 通过正则表达式级别过滤的长度为 5 的 Python 3.3 itertools 映射

php - 从表单获取用户输入,使用 php 写入文本文件

javascript - javascript中错误的递增和递减

javascript - 在其子域上为外部网站创建和删除 cookie

javascript - 在 CkEditor 中,如何在当前编辑时应用样式表?