【问题标题】:Stop Radio Button Running Multiple Times停止单选按钮多次运行
【发布时间】:2015-04-21 13:12:39
【问题描述】:

抱歉,对 jQuery 有点陌生,正在阅读但无法找到解决方案。

我有一个单选按钮,点击后会运行一些 jQuery:

<input type="radio" id="op5" value="1" name="options2" class="custom" />

单击此单选按钮后,以下 jQuery 将运行以在页面上执行多项操作

    jQuery('#op5').click(function () {
        $('input[type=checkbox]').trigger('click');
        $(".white").attr('class', 'white checked');
        $(".blue").attr('class', 'blue checked');
        $(".sub_label").attr('class', 'sub_label')
        $(".sub_label checked").attr('class', 'sub_label')

    });

此时,如果用户重新单击单选按钮,它会重新运行,并且会在重新运行该行时取消选中复选框

$('input[type=checkbox]').trigger('click');

有没有办法让我的 jQuery 函数中的代码停止第二次运行?

JS 小提琴 - https://jsfiddle.net/jqh3L8t6/

【问题讨论】:

  • 制作小提琴 - 蚂蚁会更容易提供帮助
  • jQuery('#op5').one("click" , function () {
  • @JqueryKing 请将其作为答案
  • 您希望它只运行一次,还是仅在选中时运行(即,如果选择了另一个收音机,您是否要重新启用该功能)?
  • @redbmk 那会很有用。

标签: javascript jquery html


【解决方案1】:

在 jquery 中使用.one() 只会触发一次。使用.addClass() 而不是为类添加attr()

jQuery('#op5').one("click" , function () {
          $('input[type=checkbox]').trigger('click');
          $(".white").addClass('white checked');
          $(".blue").addClass('blue checked');
          $(".sub_label :checked").addClass('sub_label')

 });

Fiddle

【讨论】:

  • 唯一的事情是addClass 将添加这些类,但覆盖class 属性也会删除任何其他类。可能 OP 只是想添加类,但根据期望的结果,另一种方法不一定是错误的。
猜你喜欢
  • 2013-02-20
  • 2018-08-15
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
相关资源
最近更新 更多