关于onclick和addEventListener('click')的整理

click

代码

 
$(function(){
    $("#btn").click(function(){
        console.log(2)
    })
    $("#btn").click(function(){
        console.log(1)
    })
    $("#btn").click(function(){
        console.log(3)
    })
})


这个点击结果是输出2,1,3
因为你此处相当于绑定了click,在你没解绑之前,他依然具有第一个事件的,所以他会继续之前一个;
原生
 
document.getElementById("btn").addEventListener("click",function(){
    console.log(10)
},false)
document.getElementById("btn").addEventListener("click",function(){
    console.log(11)
},false)
document.getElementById("btn").addEventListener("click",function(){
    console.log(12)},false);


而onclick:
是重新赋值,变量提升
 
document.getElementById("btn").οnclick=function(){
    console.log(1)
}
document.getElementById("btn").οnclick=function(){
    console.log(2)
}
document.getElementById("btn").οnclick=function(){
    console.log(3)
}


最终结果是3
 

addEventListener

addEventListener是W3C DOM中提供的注册时间监听器的方法。

1、它允许给一个事件注册多个监听器。在使用DHTML库或者Mozilla extensions这样需要保证nenggou7和其他的库或者差距并存的时候非常有用。

2、它提供了一种更精细的手段控制事件监听器的触发阶段,(即可以选择捕获或者冒泡)。

3、他对任何DOM元素都是有效的,而不仅仅只对HTMLK元素有效。

参考:https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener

demo如下,得出结果onclick只出现一次alert:我是click2【很正常第一次click事件会被第二次所覆盖】,但是addEventListener却可以先后运行,不会被覆盖【正如:它允许给一个事件注册多个监听器。在使用DHTML库或者 Mozilla extensions 这样需要保证能够和其他的库或者差距并存的时候非常有用。】

<ul id="color-list">
    <li id="addEvent">red</li>
    <li id="on_click">yellow</li>
</ul>
    <script type="text/javascript">
        (function(){
            var addEvent = document.getElementById("addEvent");
                    addEvent.addEventListener("click",function(){
                        alert("我是addEvent1");
                    },false);
                    addEvent.addEventListener("click",function(){
                        alert("我是addEvent2");
                    },false);

            var addEvent = document.getElementById("on_click"); 

            on_click.onclick = function() {
                alert("我是click1");
            }
            on_click.onclick = function() {
                alert("我是click2");
            }
        })();
    </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值