关于Jquery中的事件绑定总结


Posted in Javascript onOctober 26, 2016

前言

因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单的归纳一下bind,live,delegate,on的区别,以便以后查阅,也希望该文章日后能帮助到朋友,如有不妥之处,希望指出、交流。

一.bind()

简要描述

bind()向匹配元素添加一个或多个事件处理器。

使用方式

$(selector).bind(event,data,function)

event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

单事件处理:例如 $(selector).bind("click",data,function);

多事件处理:1.利用空格分隔多事件,例如 $(selector).bind("click dbclick mouseout",data,function);

2.利用大括号灵活定义多事件,例如 $(selector).bind({event1:function, event2:function, ...}) 

3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;  

data:可选;需要传递的参数;

function:必需;当绑定事件发生时,需要执行的函数;

适用Jquery版本

适用所有版本,但是根据官网解释,自从jquery1.7版本以后bind()函数推荐用on()来代替。

二.Live()

简要描述

live() 向当前或未来的匹配元素添加一个或多个事件处理器;

使用方式

$(selector).live(event,data,function)

event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

单事件处理:例如 $(selector).live("click",data,function);

多事件处理:1.利用空格分隔多事件,例如 $(selector).live("click dbclick mouseout",data,function);

2.利用大括号灵活定义多事件,例如 $(selector).live({event1:function, event2:function, ...}) 

3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;  

data:可选;需要传递的参数;

function:必需;当绑定事件发生时,需要执行的函数;

适用Jquery版本

jquery1.9版本以下支持,jquery1.9及其以上版本删除了此方法,jquery1.9以上版本用on()方法来代替。

三.delegate()

简要描述

delegate() 为指定的元素(被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。

使用方式 

$(selector).delegate(childSelector,event,data,function)

childSelector: 必需项;需要添加事件处理程序的元素,一般为selector的子元素;

event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

单事件处理:例如 $(selector).delegate(childselector,"click",data,function);

多事件处理:1.利用空格分隔多事件,例如 $(selector).delegate(childselector,"click dbclick mouseout",data,function);

2.利用大括号灵活定义多事件,例如 $(selector).delegate(childselector,{event1:function, event2:function, ...}) 

3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;  

data:可选;需要传递的参数;

function:必需;当绑定事件发生时,需要执行的函数;

适用Jquery版本

jquery1.4.2及其以上版本;

四.on()

简要描述

on() 为指定的元素,添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。使用 on() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。

使用方式 

$(selector).on(event,childselector,data,function)

event:必需项;添加到元素的一个或多个事件,例如 click,dblclick等;

单事件处理:例如 $(selector).on("click",childselector,data,function);

多事件处理:1.利用空格分隔多事件,例如 $(selector).on("click dbclick mouseout",childseletor,data,function);

2.利用大括号灵活定义多事件,例如 $(selector).on({event1:function, event2:function, ...},childselector); 

3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;

大括号替代方式:绑定较为灵活,可以给事件单独绑定函数; 

childSelector: 可选;需要添加事件处理程序的元素,一般为selector的子元素; 

data:可选;需要传递的参数;

function:必需;当绑定事件发生时,需要执行的函数;

适用Jquery版本

jquery1.7及其以上版本;jquery1.7版本出现之后用于替代bind(),live()绑定事件方式;

五.四种方式的异同和优缺点

相同点:

1.都支持单元素多事件的绑定;空格相隔方式或者大括号替代方式;

2.均是通过事件冒泡方式,将事件传递到document进行事件的响应;

六.比较和联系:

1.bind()函数只能针对已经存在的元素进行事件的设置;但是live(),on(),delegate()均支持未来新添加元素的事件设置;

2.bind()函数在jquery1.7版本以前比较受推崇,1.7版本出来之后,官方已经不推荐用bind(),替代函数为on(),这也是1.7版本新添加的函数,同样,可以

用来代替live()函数,live()函数在1.9版本已经删除;

3.live()函数和delegate()函数两者类似,但是live()函数在执行速度,灵活性和CSS选择器支持方面较delegate().

4.bind()支持Jquery所有版本;live()支持jquery1.8-;delegate()支持jquery1.4.2+;on()支持jquery1.7+; 

七.总结

如果项目中引用jquery版本为低版本,推荐用delegate(),高版本jquery可以使用on()来代替,以上仅为个人看法,如有不同想法,欢迎交流。

以上就是小编为大家带来的关于Jquery中的事件绑定总结全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
Visual Studio中js调试的方法图解
Jun 30 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 Javascript
浅谈JavaScript Math和Number对象
Jan 26 Javascript
Node.js检测端口(port)是否被占用的简单示例
Sep 29 Javascript
JavaScript常见的五种数组去重的方式
Dec 15 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
Feb 08 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 Javascript
原生js实现淘宝放大镜效果
Oct 28 Javascript
layui默认选中table的CheckBox复选框方法
Sep 19 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
Oct 25 #Javascript
理解JavaScript原型链
Oct 25 #Javascript
Ztree新增角色和编辑角色回显问题的解决
Oct 25 #Javascript
jQuery+json实现动态创建复杂表格table的方法
Oct 25 #Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
Oct 25 #Javascript
JavaScript prototype属性详解
Oct 25 #Javascript
对Angular.js Controller如何进行单元测试
Oct 25 #Javascript
You might like
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
js返回顶部实例分享
2016/12/21 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
Python时间获取及转换知识汇总
2017/01/11 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
应届生污水处理求职信
2013/11/06 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS