JavaScript之事件的绑定与移除
对于事件的绑定的方法有多种多样,但是在解除绑定事件的时候,就要注意使用的是那种绑定事件的方法,因为不同的绑定方法所对应的解除事件是不同的。
1. 原始写法
1.1 绑定事件:对象.事件=事件处理函数
<!doctype html>
<html>
<head>
<style type="text/css">
#div1{
width:200px;
height:200px;
background:pink;
margin-bottom: 10px;
}
</style>
</head>
<body>
<div id="div1"></div>
<button type="button" id="btn1">绑定事件</button>
<button type="button" id="btn2">移除事件</button>
</body>
<script type="text/javascript">
var btn1= document.getElementById("btn1");
btn1.onclick = function(){
alert(1);
}
</script>
</html>
1.2 解除事件: 对象.事件=null (此方法就是函数的覆盖)
<script type="text/javascript">
var btn1= document.getElementById("btn1");
var btn2 = document.getElementById("btn2");
btn1.onclick = function(){
alert("btn1事件绑定成功!");
}
btn2.onclick = function(){
btn1.onclick =null;
alert("btn1所绑定的事件已经被移除!");
}
</script>
运行结果:在开始是,点击“绑定事件”按钮,会弹出一个提示框“btn1事件绑定成功!”,当点击“移除事件”按钮时,btn1所绑定的事件就已经移除了,并弹出提示
======================================================
2. 使用 attachEvent 、detachEvent、addEventListener 与 removeEventListener
2.1 事件绑定------attachEvent ,addEventListener
使用 attachEvent 和 addEventListenter 的好处就是,可以多次的进行事件的绑定,不向原始的方法那样,前面绑定的事件将会被后面的绑定的事件所覆盖,最后只能执行后面所绑定的函数。
attachEvent
<script type="text/javascript">
var btn1= document.getElementById("btn1");
btn1.attachEvent ('onclick',function(){alert('1');});
btn1.attachEvent ('onclick',function(){alert('2');});
</script>
运行结果:2,1
说明:attachEVent 是先绑定后执行,它将先执行我后绑定的函数。
注意:1)attachEvent 只能兼容 IE7,IE8;
2)attachEvent 绑定的事件前面要加“on”
addEventListener
<script type="text/javascript">
var btn1= document.getElementById("btn1");
btn1.addEventListener ('click',function(){alert('1');},false);
btn1.addEventListener ('click',function(){alert('2');},false);
</script>
运行结果:1,2
说明:1) addEventListener 是先绑定先执行,它将按顺序执行我绑定的事件。
2) addEventListener 的第三个参数:
布尔值参数是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序
注意:1)addEventListener 与 attachEVent 正好相反, 只不兼容 IE7,IE8,其他大部分的浏览器都可以执行。
2)addEventListener 绑定的事件前面不要加“on”
2.2 事件解除------detachEvent,removeEventListener
detachEvent
<script type="text/javascript">
var fun = function(){
alert(11);
}
var btn1= document.getElementById("btn1");
var btn1= document.getElementById("btn1");
btn1.attachEvent ('onclick',fun,false);
btn1.detachEvent('onclick',fun,false);
</script>
removeEventListener
<script type="text/javascript">
var fun = function(){
alert(1);
}
var btn1= document.getElementById("btn1");
btn1.addEventListener('click',fun,false);
btn1.removeEventListener('click',fun,false);
</script>
注意:1) 在removeEventListener 传入的参数与 addEventListener 传入的参数要一致,看似使用了相同的参数,但实际上,第二个参数与传入addEventListener()中的与第一个是完全不同的函数。
2) 因为移除时传入的参数与添加处理程序时使用的参数相同。这也意味着通过addEventListener()添加的匿名函数无法移除。
btn1.addEventListener('click',function(){alert(1);},false);
btn1.removeEventListener('click',function(){alert(1);},false);//无效
3)在公用函数体存在参数的情况下,不能将带参数的函数体传给 addEventListener 和 romoveEventListener。
错误示例:
<script type="text/javascript">
var fun = function(e){
e.preventDefault();//阻止事件目标的默认动作
alert(1);
}
var btn1= document.getElementById("btn1");
btn1.addEventListener('click',fun(event),false);
btn1.removeEventListener('click',fun(event),false);
</script>
正确示例:
<script type="text/javascript">
var fun = function(e){
e.preventDefault();//阻止事件目标的默认动作
alert(1);
}
var btn1= document.getElementById("btn1");
btn1.addEventListener('click',fun,false);
btn1.removeEventListener('click',fun,false);
</script>
4)detachEvent 与 removeEventListener 注意事项相同。
JavaScript之事件的绑定与移除的更多相关文章
- js监听事件的绑定与移除
监听事件的绑定与移除主要是addEventListener和removeEventListener的运用. addEventListener语法 element.addEventListener(ty ...
- js 多个事件的绑定及移除(包括原生写法和 jquery 写法)
需要打开控制台查看效果: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- js事件的绑定与移除
事件的绑定分为3类: <div id='clickEvent'>点击事件</div> 在DOM元素中直接绑定 <div onclick="alert('4567 ...
- javascript对象事件绑定方法
javascript对象事件绑定方法 今天在做对象事件绑定的过程中出现了一点异外情况,由于事件方法是由参数传过来的,需要将当前对象call过去,方便方法体里直接调用this 错误写法 obj.oncl ...
- javascript之事件绑定
曾经写过一篇随笔,attachEvent和addEventListener,跟本文内容有很多相似之处 本文链接:javascript之事件绑定 1.原始写法 <div onclick=" ...
- jQuery 事件绑定 和 JavaScript 原生事件绑定
总结一下:jQuery 事件绑定 和 JavaScript 原生事件绑定 及 区别 jQuery 事件绑定 jQuery 中提供了四种事件监听绑定方式,分别是 bind.live.delegate.o ...
- 前端(十五)—— JavaScript事件:绑定事件方式、事件的冒泡和默认事件、鼠标事件、键盘事件、表单 事件、文档事件、图片事件、页面事件
JS事件:绑定事件方式.事件的冒泡和默认事件.鼠标事件.键盘事件.表单 事件.文档事件.图片事件.页面事件 一.事件的两种绑定方式 1.on事件绑定方式 document.onclick = func ...
- JavaScript中事件绑定的方法总结
最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScr ...
- JavaScript事件属性绑定带参数的函数
JavaScript中在对事件进行绑定的时候,往往是element.onclick=event;这种形式,这样使用的话则会出现无法传参数.因此我们可以使用function(){}匿名函数将事件包含其中 ...
随机推荐
- centos7安装python3 以及tab补全功能
1.安装python3 1.1下载python源码包 网址:https://www.python.org/downloads/release/python-362/ 下载地址:https://www. ...
- Lecture6.概率极限理论
一.随机变量序列的收敛性 1.定义 (1)概率为1收敛: 如果$P{\lim\limits_{n \to \infty}X_n = X} = 1$,则称{Xn}概率为1地收敛于X,或几乎处处(几乎必然 ...
- 使用mysql设计一个全局订单生产计数器
2018年8月10日08:53:50 一般生产订单号的方式 1,使用时期+随机数1+随机数2 缺点,有可能在并发的时候会出现重复,解决办法就是加唯一索引,在插入数据的做查询是否已经被使用 2,使用时间 ...
- 内置对象之request对象
内置对象就是(容器)已经创建好的对象,可以被直接使用.当用户发送一个请求给容器,它就会自动创建一个对象来处理客户端发送来的消息,如request这个对象,可以获取到用户(客户端)发送来的信息.它的常见 ...
- PHP 简易聊天室 利用redis的订阅发布功能
demo:http://www.200ok.fun:8083/api/chat/list 前言:这个种方式太耗redis连接数,每次订阅都会新起一个进程,仅供练手使用,切勿用于生产环境. 原理:1.P ...
- SCRIPT438: 对象不支持“indexOf”属性或方法
SCRIPT438: 对象不支持“indexOf”属性或方法 indexOf()的用法:返回字符中indexof(string)中字串string在父串中首次出现的位置,从0开始!没有返回-1:方便判 ...
- this在java中的用法
this在java中的用法 1.使用this关键字引用成员变量 作用:解决成员变量与参数或局部变量命名冲突的问题 public class Dog { String name; public Dog( ...
- MongoDB操作集
官网 https://www.mongodb.com/download-center#community 基本资料: http://www.runoob.com/mongodb/mongodb-int ...
- Jenkins+Jmeter持续集成笔记(五:问题优化)
通过前面的一系列文章,我的API自动化测试平台已经搭建成型,但是要投入具体项目使用时,还有以下几个问题需要优化. 还是接着以上一篇笔记中的“test_token”项目为例: 1.邮件通知问题 (1)问 ...
- (4.10)mysql备份还原——利用binlog+全备恢复误删表【不推荐使用】
关键误操作:mysql误删除 1.备份+binlog恢复数据 [1.1]场景:不小心误删除某张表 [1.2]解决方法:在另外一台机器,恢复全库+日志,然后导出删除的表,再插入会生产库. [1.3]案例 ...