绑定过个事件的难题
二级事件绑定
捕捉与冒泡
实测捕捉与冒泡
停止传播行为与阻止行为
绑定多个事件的难题:(用途:前端特效、服务端需要监看点击次数 因此两次绑定,仅仅后面的生效问题)
代码如下:
<a href="#" id="a" >a</a> </body> <script type="text/javascript"> var a = document.getElementById("a"); a.onclick=function(){ alert("aa"); } a.onclick=function(){ alert("bb"); } </script>
最终弹出bb这是因为覆盖掉前面的onclick属性的值
高级绑定事件
a.addEventListener('click',function(){ alert("aa"); }) a.addEventListener('click',function(){//第一个参数绑定的事件、第二个参数为函数 、第三个是冒泡还是捕捉 alert("bb"); }) a.removeEventListener('click',function(){//删除事件 第一个参数是事件 第二个是某个事件的某个值 alert("aa"); });
<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> #china{ width:500px; height:500px; } div{ width:80%; height: 80%; border:1px solid red; margin:10%; } </style> </head> <body> <div id="china"> china <div id="a"> a <div id="b"> b </div> </div> </div> </body> <script type="text/javascript"> var china = document.getElementById("china"); var a = document.getElementById("a"); var b = document.getElementById("b"); a.addEventListener('click',function(){//第一个参数绑定的事件、第二个参数为函数 、第三个是冒泡还是捕捉 alert("b-a"); },true); b.addEventListener('click',function(){//第一个参数绑定的事件、第二个参数为函数 、第三个是冒泡还是捕捉 alert("b-b"); },true); china.addEventListener('click',function(){//第一个参数绑定的事件、第二个参数为函数 、第三个是冒泡还是捕捉 alert("b-china"); },true); //冒泡 a.addEventListener('click',function(){//第一个参数绑定的事件、第二个参数为函数 、第三个是冒泡还是捕捉 alert("m-a"); }); b.addEventListener('click',function(){//第一个参数绑定的事件、第二个参数为函数 、第三个是冒泡还是捕捉 alert("m-b"); }); china.addEventListener('click',function(){//第一个参数绑定的事件、第二个参数为函数 、第三个是冒泡还是捕捉 alert("m-china"); }); </script> </html>
默认为捕捉过程
点击china b-china m-china
点击a b-china b-a m-a m-china
点击b b-china b-a b-b m-b m-a m-china
阻止事件
将上面的a的点击冒泡事件改为
a.addEventListener('click',function(event){//第一个参数绑定的事件、第二个参数为函数 、第三个是冒泡还是捕捉 alert("m-a"); event.stopPropagation(); });
此时点击a b-china b-a m-a