js添加事件的方法,javascript中如何使用事件处理程序
本教程运行环境:windows7系统,javascript1.8.5版本1.8.5,戴尔G3电脑。
一、addEventListener()和removeEventListener()讲解
AddEventListener()和removeEventListener()用于处理指定和删除事件处理程序的操作。
它们都接受三个参数:如addEventListener(事件名,事件处理程序,布尔值);(注意:事件名称不包含“开”,如“点击”)
当前版本的可以省略第三个参数,默认值为false。
示例:
若要在主体上添加事件处理程序,可以使用以下代码:
document . body . addevent listener( touch move ,function (event) {
event . prevent default();
},假);通过addEventListener()添加的事件处理程序只能使用removeEventListener()删除;移除时传入的参数与添加处理程序时使用的参数相同。这也意味着不能删除通过addEventListener()添加的匿名函数。
错误用法示例:
document . body . addevent listener( touch move ,function (event) {
event . prevent default();
},假);
document . body . removeeventlistener( touch move ,function (event) {
event . prevent default();
},假);在此示例中,使用addEventListener()添加一个事件处理程序。虽然调用removeEventListener(0)看似使用了相同的参数,但实际上第二个参数与addEventListener()中传递的完全不同。传递的removeEventListener()中的事件处理程序函数必须与传递的addEventListener()中的函数相同。
正确用法示例:
函数体滚动(事件){
event . prevent default();
}
document . body . addevent listener( touch move ,bodyScroll,false);
document . body . removeeventlistener( touch move ,bodyScroll,false);重写后的示例在addEventListener()和removeEventListener()中使用了相同的函数。
共享函数不能带参数。不正确用法的例子:
函数体滚动(事件){
event . prevent default();
}
document . body . addevent listener( touch move ,bodyScroll(),false);
document . body . removeeventlistener( touch move ,bodyScroll(),false);总结:
1:绑定和释放同一个事件需要通用的函数;以及不带 on 的unbinding事件,即onclick写成click。
2:共享函数不能有参数;
二、addEventListener()与removeEventListener()的第三个参数详解
布尔值为真,表示事件处理程序在捕获阶段被调用;也就是说,最不特定的节点首先接收事件,而最特定的节点最后接收事件。
如果为false,则在冒泡阶段调用事件处理程序;就是先找到指定的位置,由最具体的元素接收,然后一步步扩散到最不具体的元素的节点(文档)。
DOM事件流程如图所示(截自javascript高级编程):
从图中可以看出,捕获过程先于冒泡过程,即真的触发序列先于假的触发序列。
示例测试
HTML内容:
!声明文档类型
html lang=en
头
meta charset=UTF-8
将事件添加到标题取消绑定事件/标题
/头
身体
p id=out
p最外面/p
p id=中间
P id=inner 最里面的/p
/p
/p
/body
/htmljs内容:(case 1)addevent listener的第三个参数有两种情况:ture false,所以有2*2*2=8种情况。
结论:
1.1.true的触发序列总是在false之前。
2.如果都为真,外层会在内层之前触发。
3.如果它们都为假,则内部触发器在外部触发器之前。
【推荐学习:javascript高级教程】以上是javascript如何添加和删除事件的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。