javascript - 为什么 Jquery 代码被多次触发

标签 javascript jquery

我有一个按钮可以从另一个页面打开模式。如果点击 .myBtn ,模式就会打开,模式会按预期关闭,并且我会收到点击警报,但是当再次按下 open modal 时,我会收到 2 次点击警报,因为模态关闭。这是为什么?如何保持 dom 中的所有元素“工作”,同时避免脚本被多次触发?非常感谢。

HTML

<button id="edit_credit" data-modal="myModal" class="btn btn-small btn-blue credit_btn">Open Modal</button> 

Jquery

$(document).ready(function() { 
    //Open Modal
    $('.credit_btn').on('click', function() {    
        $('.modal-container').load('modal_test.php',
           function() {
               $('#myModal').modal({show:true});
           }
       );

       $(document).on("click", ".myBtn", function(){
           alert('click');
       });
   });
});//End of doc

Modal_test.php(部分)

         <button type="submit" id="btn"  data-dismiss="modal" value="submit" class="btn btn-blue pull-right myBtn">
            Save</button>
             <button type="button" class="btn btn-red pull-left" data-dismiss="modal">Close</button>
              </form>
    </div><!-- /.modal-footer -->

最佳答案

因为(见评论):

$('.credit_btn').on('click', function() {    
   // Everytime you click on .credit_btn
   // ...
   // You bind that event again (and again and again)
   $(document).on("click", ".myBtn", function(){
       alert('click');
   });
});

一旦在点击事件处理之外,您就可以安全地绑定(bind)它

$(document).ready(function() { 
    //Open Modal
    $('.credit_btn').on('click', function() {    
        $('.modal-container').load('modal_test.php',
           function() {
               $('#myModal').modal({show:true});
           }
       );
   });
   $(document).on("click", ".myBtn", function(){
       alert('click');
   });
});

(虽然我会将该类从“myBtn”重命名为“closeModal”或类似名称,但在编码时要具体说明;))

关于javascript - 为什么 Jquery 代码被多次触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50591542/

相关文章:

javascript - dojox.grid.DataGrid 中没有显示数据

jquery - 修复了 Jquery Mobile 页眉和页脚在 iPhone 中不起作用的问题

javascript - pjax/ajax 和浏览器后退按钮问题

c# - Javascript 将值传递给 asp.net

javascript - 如何选择包装器中的所有元素?

jquery - 单击链接时禁用滚动

javascript - 使用 jQuery 通过 Ajax 将数据从 javascript 发送到 php。如何查看回数据?

CSS calc 的 jQuery 回退函数

javascript - 按键事件后无法清除文本框

javascript - 如何以编程方式确定 CKEditor 实例的名称