javascript - 触发 ('click' ) 多次激活

标签 javascript jquery

我有一个系统,您首先选择一个日期,然后单击“主页”按钮并调用一个包含表单的模式。当单击按钮而不选择日期时,它会变成红色并且不执行任何操作。当您选择日期并单击按钮时,它会添加模态参数,然后再次单击以打开表单。然而,表单被打开N次,锁定了整个系统。谁能帮我吗?

HTML:

<div id="cidade-1256" class="col-sm-4 box-curso">
  <div class="plan wow fadeInLeft animated animated" data-wow-offset="120" data-wow-duration="1.5s" style="visibility: visible; animation-duration: 1.5s; -webkit-animation-duration: 1.5s; animation-name: fadeInLeft; -webkit-animation-name: fadeInLeft;">
    <div class="title">Brasília</div>
      <div class="description">
        <ul><li><button type="button" class="btn btn-curso">AGO | 15 - 16</button></li></ul>
      </div>
      <a id="1256" class="btn btn-primary">ORDER NOW</a>
    </div>
  </div>
</div>

JS:

$(document).on('click', 'a[id]', function(e){
    var id_form = $(this).attr('id').replace('#', '');
    var id_order = '#' + $(this).attr('id');
    if($('#cidade-' + id_form).find('button').hasClass('active')){
       $(id_order).removeClass('btn-curso-error');
       $(id_order).attr('data-toggle', 'modal');
       $(id_order).attr('data-target', '#modal-form');
       $(this).trigger('click');
    }else{
       $(id_order).addClass('btn-curso-error');
    }
});

最佳答案

我相信您需要从按钮中删除 .active 类,否则会导致您看到的无限循环。

请参阅下面的代码片段,我认为这就是您想要实现的目标。尽管如此,我可能不会使用相同的链接再次链接。

注意:我必须将代码段中的 #1256 切换为 button,您可以将其保留为 a 标记。

$("#1256").on('click', function(e) {
    var id_form = $(this).attr('id').replace('#', '');
    var $button = $('#cidade-' + id_form).find("button");
  
    if($button.hasClass('active')){
       $button.removeClass('active');
       $(this).removeClass('btn-curso-error')
              .attr('data-toggle', 'modal')
              .attr('data-target', '#modal-form')
              .trigger('click');
    } else {
       console.log("error");
       $(this).addClass('btn-curso-error');
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="cidade-1256" class="col-sm-4 box-curso">
  <div class="plan">
    <div class="title">Brasília</div>
      <div class="description">
        <ul><li><button type="button" class="btn btn-curso active">AGO | 15 - 16</button></li></ul>
      </div>
      <button id="1256" class="btn btn-primary">ORDER NOW</button>
    </div>
  </div>
</div>

关于javascript - 触发 ('click' ) 多次激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30737622/

相关文章:

javascript - 在更改上一个选择框中的相同项目时禁用项目

javascript - 如何动态缩放pdf图像

javascript - ReactJS - 将对象键和值作为 props 传递给 div

javascript - 在 Javascript 中按大写字母拆分

javascript - 如何使用 :after using jQuery? 编辑在 CSS 中创建的元素

javascript - 无法将 bootstrap-select 与 Jquery 附加一起用于动态下拉列表

jquery - 选择标签中的部分文本

javascript - 一般而言 : what is the difference between a handler and a function?

javascript - 使用 querySelector 从单选按钮读取 2 个值

javascript - Angular js,如何在选择更改时启用