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 相关文章推荐
载入进度条 效果
Jul 08 Javascript
超级退弹代码
Jul 07 Javascript
JavaScript 对Cookie 操作的封装小结
Dec 31 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
May 13 Javascript
jQuery实现多级联动下拉列表查询框
Jan 18 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
Feb 20 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
jQuery Ajax使用FormData对象上传文件的方法
Sep 07 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
微信小程序自定义导航教程(兼容各种手机)
Dec 12 Javascript
js canvas实现橡皮擦效果
Dec 20 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 远程图片保存到本地的函数类
2008/12/08 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
Python实现批量下载图片的方法
2015/07/08 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
python logging通过json文件配置的步骤
2020/04/27 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
日语专业毕业生求职信
2013/12/04 职场文书
暑期培训心得体会
2014/09/02 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS