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 相关文章推荐
prototype 学习笔记整理
Jul 17 Javascript
JavaScript 提升运行速度之循环篇 译文
Aug 15 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
Jan 06 Javascript
炫酷的js手风琴效果
Oct 13 Javascript
微信小程序 本地数据存储实例详解
Apr 13 Javascript
微信小程序 slider的简单实例
Apr 19 Javascript
node.js中实现kindEditor图片上传功能的方法教程
Apr 26 Javascript
JS如何设置元素样式的方法示例
Aug 28 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
Sep 08 Javascript
node中使用log4js4.x版本记录日志的方法
Aug 20 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
原生js实现九宫格拖拽换位
Jan 26 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
如何过滤高亮显示非法字符
2006/10/09 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
全面理解闭包机制
2016/07/11 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
python中bisect模块用法实例
2014/09/25 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
python的等深分箱实例
2019/11/22 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
pytorch简介
2020/11/11 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
工作表扬信的范文
2014/01/10 职场文书
办公室综合文员岗位职责范本
2014/02/13 职场文书
会计核算科岗位职责
2014/03/19 职场文书
留学经费担保书
2014/05/12 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
长城导游词400字
2015/01/30 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书