jQuery on 绑定的事件为何会触发多次?绑定前需要先解绑

前两天开发一个新功能,把click事件绑在了$(document)上,因为每打开一次modal,就会绑定一次click事件到$(document)上。所以后来在modal中触发$(document)的click事件时,会多次执行$(document)的click事件。

例如:以下用'on'函数为一个新增加的按钮绑定了一个事件,这个事件有可能会触发多次。

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>码上飘</title>
    <script src="/FrontStyle/js/jquery-1.11.2.min.js" type="text/javascript"></script>
    <script>
        $(function(){
            $('#btn1').click(function () {
                $('#btnBind').on('click',function () {
                    alert(123);
                });
            });
        })
    </script>
</head>
<body>
<input id="btn1" type="button"  value="确认" />
<input id="btnBind" type="button" value="绑定按钮" />
</body>
</html>

  如上面的代码,如果你点击多次'btn1'按钮,那么就会绑定多少次click事件到'btnBind'按钮上,on是绑定多少次就触发多少次的。所以,但你多次点击了'btn1'按钮时,再点击'btnBind'按钮时,就会多次alert(123);

解决方案


  要想它只绑定一次,可以先'off'然后再'on'。

$('#btnBind').off('click').on('click',function () {
    alert(123);
});
posted @ 2018-03-26 10:10  姗崽崽崽  阅读(327)  评论(0编辑  收藏  举报