jQuery:优化代码(标签中的背景)

标签 jquery checkbox label

我有这个 jQuery 代码,我不确定它是否可以优化(缩短):

//Checkboxes highlight
$('.show-results-from label').addClass('active');
$('input:checkbox').click(function(){       
    if ($('input:checkbox#a').is(':checked')) {
        $('.label-a').addClass('active');
        $
    } else {
        $('.label-a').removeClass('active');
    }
    if ($('input:checkbox#b').is(':checked')) {
        $('.label-b').addClass('active');
        $
    } else {
        $('.label-b').removeClass('active');
    }
    if ($('input:checkbox#c').is(':checked')) {
        $('.label-c').addClass('active');
        $
    } else {
        $('.label-c').removeClass('active');
    }
});

这是相应的 HTML:

<div class="show-results-from">
  <ul>
    <li>See results from:</li>
    <li>
      <label class="label-a">
        <input name="a" type="checkbox" id="a" value="tabs1" checked disabled>
        Products &amp; Services <span>(16)</span></label>
    </li>
    <li>
      <label class="label-b">
        <input name="b" type="checkbox" id="b" value="tabs2" checked>
        Publications <span>(9)</span></label>
    </li>
    <li>
      <label class="label-c">
        <input name="c" type="checkbox" id="c" value="tabs3" checked>
        Other <span>(150)</span></label>
    </li>
  </ul>
</div>

这里发生的情况是,在页面加载时,所有标签都添加了一个类,通过 CSS,该类的样式被设置为以视觉方式向用户传达该复选框已被选中的信息。

当他们单击标签或复选框时,该类将被删除,并且用户可以直观地知道该复选框已被取消选择。

就是这样。

知道 jQuery 代码是否可以优化吗?或者我可以保持原样吗?...对我来说这看起来太重复了,但我不是 JavaScript 专家。

预先感谢您对此提供的任何帮助。

最佳答案

是的,您可以缩短 click处理程序(或 change ,我更喜欢这里)向下找到 <label>相对而言,像这样:

$('input:checkbox').change(function(){ 
  $(this).parent().toggleClass('active', this.checked);
});

这使用 .parent() 获取<label> ,然后 .toggleClass() 切换 .active类(class)开/关取决于是否选中。

关于jQuery:优化代码(标签中的背景),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4619192/

相关文章:

python - 使用 pandas 读取包含许多命名列标签的 csv 文件

java - 使用java中的线程通过标签进行 move 运动

javascript - 逐步上传页面内容(不必等到所有内容都加载完毕)

javascript - 只有第一个复选框值被添加到我的表中

javascript - 带有集群和过滤器复选框的 Mapbox 个性化图标

css - 样式不可编辑的输入复选框和文本框

jquery - 使用jEditable编辑下拉列表时出现错误 "validator is undefined"

javascript - 如何设置 bxslider 图像 slider 的样式?

jquery - Bootstrap 选项卡 : load NGL viewer into tab

jquery - 使用 jquery 在输入中添加标签