JS事件监听的添加方法
2017-06-02 10:50
465 查看
一、
我们一般在的事件添加时是这样做的:
elm.onclick = function( ) { //handler } 这样的写法兼容主流的浏览器,但是存在一个问题,当同一个elm绑定多个事件时,只有最后一个事件会被添加
如:elm.onclick = handler1;
elm.onclick = handler2;
elm.onclick = hander3;
只有handler3会被添加执行,所以我们使用另外一种方法添加事件;
二、
IE:attachEvent
elm.attachEvent("onclick",handler1);
elm.attachEvent("onclick",handler2);
elm.attachEvent("onclick",handler3);
三个方法执行的顺序是3 - 2 -1;
标准:addEventListener( ):
elm.addEventListener( "click",handler1,false );
elm.addEventListener( "click",handler2,false );
elm.addEventListener( "click",handler3,false );
执行的顺序:1 - 2 - 3
该方法的第三个参数是泡沫获取,是一个布尔值:当为false时表示由里向外,true表示由外向里:
// 点击div2 div2 - div1
// 点击div2 div1 - div2
三、
DOM方法 addEventListener() 和 removeEventListener()是用来分配和删除事件的函数。 这两个方法都需要三个参数,分别为:
事件名称(String)、要触发的事件处理函数(Function)、指定事件处理函数的时期或阶段(boolean)。
DOM事件流如图(剪自javascript高级程序设计):
![](http://blog.csdn.net/minggehenhao/article/details/file:/C:/Users/winter/AppData/Local/Temp/enhtmlclip/Image.png)
由图可知捕获过程要先于冒泡过程
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/23/305437982929c31c85a978d535bbd82e.png)
当第三个参数设置为true就在捕获过程中执行,反之就在冒泡过程中执行处理函数。
四、通用的事件添加方法:
1、
on:function(elm,type,handler)
{
// 添加事件
return elm.attachEvent ? elm.attachEvent("on"+type,handler) : elm.addEventListener(type,handler,false);
}
我们一般在的事件添加时是这样做的:
elm.onclick = function( ) { //handler } 这样的写法兼容主流的浏览器,但是存在一个问题,当同一个elm绑定多个事件时,只有最后一个事件会被添加
如:elm.onclick = handler1;
elm.onclick = handler2;
elm.onclick = hander3;
只有handler3会被添加执行,所以我们使用另外一种方法添加事件;
二、
IE:attachEvent
elm.attachEvent("onclick",handler1);
elm.attachEvent("onclick",handler2);
elm.attachEvent("onclick",handler3);
三个方法执行的顺序是3 - 2 -1;
标准:addEventListener( ):
elm.addEventListener( "click",handler1,false );
elm.addEventListener( "click",handler2,false );
elm.addEventListener( "click",handler3,false );
执行的顺序:1 - 2 - 3
该方法的第三个参数是泡沫获取,是一个布尔值:当为false时表示由里向外,true表示由外向里:
<div id=
"id1"
>
<div id=
"id2"
></div>
</div>
document.getElementById(
'id1'
).addEventListener(
'click'
,
function
() { console.log(
'id1'
);},
false
);
document.getElementById(
'id2'
).addEventListener(
'click'
,
function
() { console.log(
'id2'
);},
false
);
// 点击div2 div2 - div1
document.getElementById(
'id1'
).addEventListener(
'click'
,
function
() { console.log(
'id1'
);},
false
);
document.getElementById(
'id2'
).addEventListener(
'click'
,
function
() { console.log(
'id2'
);},
true
);
// 点击div2 div1 - div2
三、
DOM方法 addEventListener() 和 removeEventListener()是用来分配和删除事件的函数。 这两个方法都需要三个参数,分别为:
事件名称(String)、要触发的事件处理函数(Function)、指定事件处理函数的时期或阶段(boolean)。
DOM事件流如图(剪自javascript高级程序设计):
![](http://blog.csdn.net/minggehenhao/article/details/file:/C:/Users/winter/AppData/Local/Temp/enhtmlclip/Image.png)
由图可知捕获过程要先于冒泡过程
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/23/305437982929c31c85a978d535bbd82e.png)
当第三个参数设置为true就在捕获过程中执行,反之就在冒泡过程中执行处理函数。
四、通用的事件添加方法:
1、
on:function(elm,type,handler)
{
// 添加事件
return elm.attachEvent ? elm.attachEvent("on"+type,handler) : elm.addEventListener(type,handler,false);
}
相关文章推荐
- JS事件监听的添加方法
- JS事件监听的添加方法
- 如何为js控件添加事件监听
- js阻止默认行为和冒泡,添加和删除监听事件
- JS 监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
- (转载)JS事件监听 JS:attachEvent和addEventListener使用方法
- JS 添加/删除事件监听
- Java添加事件监听的四种方法代码实例
- js动态添加事件的方法!()
- JS针对浏览器窗口关闭事件的监听方法
- js动态创建的元素添加监听事件
- JS实现动态给标签控件添加事件的方法示例
- JS动态添加事件的执行方法.
- js给对象标签添加事件&方法的封装
- Java添加事件监听的四种方法代码实例
- Js事件详解(1)事件类型及几种添加事件处理程序的方法
- JS常用方法(获取Class、获取元素样式、事件监听、cookie、ajax等)
- Java添加事件监听的方法及代码实例