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 相关文章推荐
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
Apr 12 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
Sep 20 Javascript
js清空form表单中的内容示例
May 20 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
Mar 02 Javascript
JavaScript检测鼠标移动方向的方法
May 22 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
Jul 26 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
Feb 25 Javascript
JavaScript中立即执行函数实例详解
Nov 04 Javascript
vue中element组件样式修改无效的解决方法
Feb 03 Javascript
Vue实现左右菜单联动实现代码
Aug 12 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
Jan 28 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
php把数组值转换成键的方法
2015/07/13 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
joomla数据库操作示例代码
2016/01/06 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
JS字符串函数扩展代码
2011/09/13 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
2015/05/03 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python内置的字符串处理函数整理
2013/01/29 Python
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
图解Python变量与赋值
2018/04/03 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
三好学生自我鉴定
2013/12/17 职场文书
太太口服液广告词
2014/03/20 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
补充协议书
2015/01/28 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
MySQL8.0.18配置多主一从
2021/06/21 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL