js和jQuery的事件处理程序


前边写过一篇js中的事件处理程序的文章,今天来讲一下如果同一个事件,绑定了多个事件处理程序会怎么样


   <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <button id="btn1" onclick="fn1();">原生js绑定了两个点击事件</button>
        <button id="btn2" onclick="fn1();">jQuery绑定了两个点击事件</button>
        <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
        <script type="text/javascript">
            var btn1 = document.getElementById("btn1");
            function fn1(){
                alert("HTML事件处理程序");
            }
            btn1.onclick = function(){
                alert("DOM0级的第一个事件处理程序");
            };
            btn1.onclick = function(){
                alert("DOM0级的第二个事件处理程序");
            };
            btn1.addEventListener("click",function(){
                alert("btn1的第一个DOM2级事件处理程序");
            },false);
            btn1.addEventListener("click",function(){
                alert("btn1的第二个DOM2级事件处理程序");
            },false);
            $("#btn2").click(function(){
                alert("btn2第一个事件处理");
            });
            $("#btn2").click(function(){
                alert("btn2第二个事件处理");
            });
            $("#btn2").bind("click",function(){
                alert("bind绑定的第一个事件处理程序");
            });
            $("#btn2").bind("click",function(){
                alert("bind绑定的第二个事件处理程序");
            });
        </script>
    </body>
    </html>

   这里,给btn1分别绑定了HTML事件处理程序、两个DOM0级事件处理程序以及两个DOM2级事件处理程序。

   btn2使用jQuery中的bind方法和click都是绑定了两个事件处理程序。

最后结果是:

      点击btn1,按顺序弹出“DOM0级的第一个事件处理程序”、“btn1的第一个DOM2级事件处理程序”、“btn1的第二个DOM2级事件处理程序”。

      点击btn2,按顺序弹出HTML事件处理程序、btn2第一个事件处理、btn2第二个事件处理、bind绑定的第一个事件处理程序、bind绑定的第二个事件处理程序。

      然后注释掉DOM0级的两个事件处理程序后,点击btn1后弹出HTML事件处理程序、btn1的第一个DOM2级事件处理程序、btn1的第二个DOM2级事件处理程序。

      很神奇啊!

总结一下,就是DOM0级事件处理程序,后边定义的事件处理程序会覆盖掉前边的。而DOM2级和jQuery中没有这种情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值