jQuery事件绑定.on()简要概述及应用


Posted in Javascript onFebruary 07, 2013

前几天在看《jquery基础教程》,看到事件委托的时候,关于live()方法讲的不是很详细,就去搜了一下关于live()和delegate()的。

然后在一处看到live()已经被移除了,?澹?缓笕タ戳俗钚碌?q源码,果然被移除了,现在是1.9.1版本,不知道live()是在之前哪个版本被移除的,惭愧啊,之前都没留意。

看源码发现bind()和delegate()都是由on()实现的。on()的描述如下:

.on( events [, selector ] [, data ], handler(eventObject) )

一个简单的事件绑定如 $('button').on('click',function(){}); 与bind()无二样。

在需要为较多的元素绑定事件的时候,优先考虑事件委托,可以带来性能上的好处。比如:

jQuery事件绑定.on()简要概述及应用   jQuery事件绑定.on()简要概述及应用

如上图,将click事件绑定在document对象上,页面上任何元素发生的click事件都冒泡到document对象上得到处理。

注意到.on()的描述中第二个可选参数:selector。如下图,添加了第二个参数,选择符button:

jQuery事件绑定.on()简要概述及应用
结果:jQuery事件绑定.on()简要概述及应用

当事件冒泡到document对象时,检测事件的target,如果与传入的选择符(这里是button)匹配,就触发事件,否则不触发。

注意.on()也可以接收一个对象参数,该对象的属性是事件类型,属性值为事件处理函数。下面是官方文档的一个例子:

jQuery事件绑定.on()简要概述及应用

最后有一点,原先的live()方法,处理函数是默认绑定在document对象上不能变的,如果DOM嵌套结构很深,事件冒泡通过大量祖先元素会导致较大的性能损失。而使用.on()方法,事件只会绑定到$()函数的选择符表达式匹配的元素上(上面我的例子中,为了简单绑定到了document),因此可以精确地定位到页面中的一部分,而事件冒泡的开销也可以减少。delegate()与on()同理,毕竟是用on()实现的:

jQuery事件绑定.on()简要概述及应用

Javascript 相关文章推荐
javascript中节点的最近的相关节点访问方法
Mar 20 Javascript
原生JS可拖动弹窗效果实例代码
Nov 09 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
Feb 10 Javascript
分析js闭包引起的事件注册问题
Mar 29 Javascript
深入理解js generator数据类型
Aug 16 Javascript
详解Angular路由 ng-route和ui-router的区别
May 22 Javascript
node-sass安装失败的原因与解决方法
Sep 04 Javascript
Angular弹出模态框的两种方式
Oct 19 Javascript
在Vue中使用Compass的方法
Mar 02 Javascript
Node.js的Koa实现JWT用户认证方法
May 05 Javascript
搭建基于express框架运行环境的方法步骤
Nov 15 Javascript
如何使用JavaScript实现栈与队列
Jun 24 Javascript
10个基于浏览器的JavaScript调试工具分享
Feb 07 #Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 #Javascript
jquery 选择器引擎sizzle浅析
Feb 06 #Javascript
extjs3 combobox取value和text案例详解
Feb 06 #Javascript
js汉字转拼音实现代码
Feb 06 #Javascript
jquery解决图片路径不存在执行替换路径
Feb 06 #Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
Feb 06 #Javascript
You might like
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
php中 $$str 中 "$$" 的详解
2015/07/06 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
javascript操作数组详解
2014/12/17 Javascript
浅谈js中的闭包
2015/03/16 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
js实现简易计算器功能
2019/10/18 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
python实现linux下使用xcopy的方法
2015/06/28 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
flask项目集成swagger的方法
2020/12/09 Python
婚庆司仪主持词
2014/03/15 职场文书
市级文明单位申报材料
2014/05/07 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
通知格式
2015/04/27 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书