顺序 | 备注 | |
事件冒泡 | 目标对象~document对象 | |
事件捕获 | document对象~目标对象 | 老版本浏览器不支持 |
DOM事件流 | document对象~目标对象~document对象 | IE8-不支持 |
var btn=document.getElementById("mybtn"); btn.onclick=function(){ alert(this.id);//mybtn }
btn.onclick=null;
var btn=document.getElementById("mybtn"); btn.addEventListener("click",function(){ alert(this.id);//mybtn },false);
第三个参数为false,表示在冒泡阶段处理事件;参数为true,表示在捕获阶段处理事件。
默认值为false,最大限度兼容各浏览器。(因为老版本只支持冒泡事件)
方式:removeEventListener()
btn.removeEventListener("click",function(){//无效 alert(this.id);//mybtn },false);
注意:通过addEventListener()添加的匿名函数将无法移除。即上一段代码中的匿名函数移除不了,因为addEventListener()中的匿名函数与removeEventListener()中的匿名函数是完全不同的函数。所以,应将匿名函数表示为一个变量,如下:
var handler=function(){ alert(this.id); } btn.addEventListener("click",handler,false); btn.removeEventListener("click",handler,false);
var btn=document.getElementById("mybtn"); btn.attachEvent("onclick",function(){ alert(this===window);//true });
第三个参数为false,表示在冒泡阶段处理事件;参数为true,表示在捕获阶段处理事件。
默认值为false,最大限度兼容各浏览器。(因为老版本只支持冒泡事件)
方式:detachEvent()
btn.detachEvent("onclick",function(){//无效 alert(this===window);
});
注意:同上;
原文:http://www.cnblogs.com/youhong/p/6119397.html