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 相关文章推荐
一个背景云变换js特效 鼠标移动背景云变化
Dec 28 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
Jan 03 Javascript
JavaScript中的依赖注入详解
Mar 18 Javascript
React Router基础使用
Jan 17 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 Javascript
Node.js实现文件上传的示例
Jun 28 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
Jul 20 jQuery
关于vue中watch检测到不到对象属性的变化的解决方法
Feb 08 Javascript
vue中$nextTick的用法讲解
Jan 17 Javascript
微信公众平台获取access_token的方法步骤
Mar 29 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
Zend引擎的发展 [15]
2006/10/09 PHP
杏林同学录(三)
2006/10/09 PHP
php自定义函数之递归删除文件及目录
2010/08/08 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
Javascript 关于基本类型和引用类型的个人理解
2019/11/01 Javascript
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
详解python Todo清单实战
2018/11/01 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Python类中self参数用法详解
2020/02/13 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
关于python中导入文件到list的问题
2020/10/31 Python
python 实现汉诺塔游戏
2020/11/28 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
What is EJB
2016/07/22 面试题
自荐书模板
2013/12/15 职场文书
2014学年自我鉴定
2014/02/23 职场文书
本科毕业生自荐信
2014/06/02 职场文书
个人授权委托书
2014/09/15 职场文书
商铺门面租房协议书
2014/10/21 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技