登录  /  注册
首页 > web前端 > js教程 > 正文

javascript如何添加事件和删除事件

醉折花枝作酒筹
发布: 2021-07-22 10:52:27
原创
5382人浏览过

js添加移除事件的方法:1、使用addeventlistener()方法添加事件,用于向指定元素添加事件句柄;2、使用removeeventlistener()方法删除事件,用于移除由addeventlistener()方法添加的事件句柄。

javascript如何添加事件和删除事件

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

一、addEventListener()和removeEventListener()讲解

     addEventListener()与removeEventListener()用于处理指定和删除事件处理程序操作。

     它们都接受3个参数:如     addEventListener("事件名" , "事件处理函数" , "布尔值");        (注:事件名不含"on",如“click”)

     现在的版本可以省略第三个参数,默认值为false

示例:

要在body上添加事件处理程序,可以使用下列代码:

document.body.addEventListener('touchmove', function (event) {
    event.preventDefault();
},false);
登录后复制

通过addEventListener()添加的事件处理程序只能使用removeEventListener()来移除;移除时传入的参数与添加处理程序时使用的参数相同。这也意味着通过addEventListener()添加的匿名函数无法移除

错误用法示例:

document.body.addEventListener('touchmove', function (event) {
    event.preventDefault();
},false);
document.body.removeEventListener('touchmove', function (event) {
    event.preventDefault();
},false);
登录后复制

这个例子中,使用addEventListener()添加一个事件处理程序。虽然调用removeEventListener(0是看似使用了相同的参数,但实际上,第二个参数与传入addEventListener()中的那一个完全不同的函数。而传入removeEventListener()中的事件处理程序函数必须与传addEventListener()中的相同

正确用法示例:

function bodyScroll(event){
    event.preventDefault();
}
document.body.addEventListener('touchmove',bodyScroll,false);
document.body.removeEventListener('touchmove',bodyScroll,false);
登录后复制

重写后的这个例子在addEventListener()和removeEventListener()中用的是相同的函数。

共用函数不能带参数,错误用法示例:

function bodyScroll(event){
    event.preventDefault();
}
document.body.addEventListener('touchmove',bodyScroll(),false);
document.body.removeEventListener('touchmove',bodyScroll(),false);
登录后复制

总结:

1:相同事件绑定和解除,需要使用共用函数;绑定和解除事件时 事件没有"on" 即onclick写成click

2:共用函数不能带参数;

二、addEventListener()与removeEventListener()的第三个参数详解

布尔值参数是true,表示在捕获阶段调用事件处理程序;就是最不具体的节点先接收事件,最具体的节点最后接收事件

如果是false,在冒泡阶段调用事件处理程序;则是先寻找指定的位置,由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档)

DOM事件流如图(剪自javascript高级程序设计):

688MJOO~]T~WE@WO7Z3GYUF.png

由图可知捕获过程要先于冒泡过程, 即 true的触发顺序在false前面

实例测试

HTML内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加事件&&解绑事件</title>
</head>
<body>
    <p id="out">
        <p>最外面</p>
        <p id="middle">
            <p id="inner">最里面</p>
        </p>
    </p>
</body>
</html>js内容:(第1种情况)
登录后复制

addEventListener的第三个参数有两种情况:ture & false   所以有2*2*2=8种情况

结论:

1.true的触发顺序总是在false前面

2.如果多个均为true   则外层触发先于内层

3.如果多个均为false  则内层触发先于外层

【推荐学习:javascript高级教程

以上就是javascript如何添加事件和删除事件的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号