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一元操作符(递增、递减)使用示例
Aug 07 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
js计算字符串长度包含的中文是utf8格式
Oct 15 Javascript
js的alert样式如何更改如背景颜色
Jan 22 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
Jun 15 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
Sep 01 Javascript
javascript简单实现类似QQ头像弹出效果的方法
Aug 03 Javascript
javascript代码调试之console.log 用法图文详解
Sep 30 Javascript
PHP+jquery+ajax实现分页
Dec 09 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
基于javascript实现贪吃蛇经典小游戏
Apr 10 Javascript
webpack打包优化的几个方法总结
Feb 10 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中使用正则表达式进行查找替换
2013/06/13 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
JS使用JSON作为参数实例分析
2016/06/23 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
JS作用域链详解
2017/06/26 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
Python 解析XML文件
2009/04/15 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
2019年分享net面试的经历和题目
2016/08/07 面试题
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL