jquery事件重复绑定的几种解决方法 (二)
防止事件重复绑定共有4种方法:
- bind()、unbind()方法
- live()、die()方法
- off()、on()方法
- one()方法
一、bind()、unbind()方法
bind();绑定事件
为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。
从某种角度上讲,bind("click",function(){})与click(function(){})是等价的。
unbind();移除通过bind()方法添加的事件
不仅仅对于bind()方法有效,它对于click()方法同样有效。
$("#btn1").unbind("click").bind("click",function(){
alert("我是btn1!");
});
$("#btn1").unbind().click(function(){
alert("我是btn1!");
});
二、live()、die()方法
live();
jQuery1.3增加了一个live()方法,给所有当前以及将来会匹配的元素绑定一个事件处理函数。
支持:click,dblclick, mousedown, mouseup等。
不支持 :blur, focus, mouseenter, mouseleave, change, submit。
live()一次只能绑定一个事件。
jquery利用了事件的冒泡机制,直接把事件绑定在了document上,然后通过event.target找出事件的来源。
要移除用live绑定的事件,请用die()方法
die();
在jquery里,使用live()来绑定事件,若想移除该事件,要使用die()方法。
$("#btn1").die("click").live("click",function() {
alert("我是btn1!");
});
三、off()、on()方法
on();绑定事件。
从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind()、 delegate()、 live()等事件函数。
即使是执行on()函数之后新添加的元素,只要它符合条件,绑定的事件处理函数也对其有效。
该函数可以为同一元素、同一事件类型绑定多个事件处理函数。触发事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。
要删除通过on()绑定的事件,请使用off()函数。
如果要附加一个事件,只执行一次,然后删除自己,请使用one()函数。
off();解除绑定事件
off()函数用于移除元素上绑定的一个或多个事件的事件处理函数。
off()函数主要用于解除由on()函数绑定的事件处理函数。
on();函数和off();函数的返回值都为jQuery类型,返回当前jQuery对象本身。
$("#btn1").off("click").on("click",function(){
alert("我是btn1!");
});
四、one();方法
绑定的事件处理函数只会执行一次。
$("#btn1").one("click",function(){
alert("我只执行一次!");
});
最新文章
- POJ 2251 Dungeon Master(3D迷宫 bfs)
- 1.C语言中的数据类型
- 十、DG
- [Android]Android系统启动流程源码分析
- JS清除IE浏览器缓存的方法
- PAT天梯赛练习题 L3-011. 直捣黄龙(多关键字SPFA+DFS)
- Linux基本命令(9)定位、查找文件的命令
- <;转>;python version 2.7 required,which was not found in the registry
- Defeat the Enemy UVALive - 7146
- Python/ MySQL练习题(一)
- Linux系统编程之事件驱动
- 为什么想起开通blog?
- javaweb项目中errorPage的问题
- 微信小程序input组件抖动及textarea组件光标错位解决方案
- Selenium2+python自动化62-jenkins持续集成环境搭建【转载】
- RelativeLayout
- 带参数setTimeout
- openssl windows 下 编译 bat
- Cut the rope
- laravel5.5事件广播系统实例laravel-echo + redis + socket.io
热门文章
- MySQL 0Day漏洞出现 该漏洞可以拿到本地Root权限
- [转载]DLL命名规则
- OpenStack平台上,linux云主机可以使用xshell连接,但是无法xftp连接
- com.sun.jersey.api.client.UniformInterfaceException:returned a response status of 403
- redis-3.2.7安装脚本
- K8S学习笔记之Flannel解读
- javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 解决方法
- 02: http
- python---02.while循环 格式化输出 运算符 编码
- Oracle错误——SP2-0734: 未知的命令开头 ";imp C##sin..."; - 忽略了剩余的行。