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查找法实现当前栏目的高亮显示的代码
Nov 24 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
屏蔽Flash右键信息的js代码
Jan 17 Javascript
自己写的Javascript计算时间差函数
Oct 28 Javascript
JavaScript获取浏览器信息的方法
Nov 20 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 Javascript
Bootstrap选项卡动态切换效果
Nov 28 Javascript
js实现多行文本框统计剩余字数功能
Mar 28 Javascript
weex里Vuex state使用storage持久化详解
Sep 09 Javascript
ES6中Array.copyWithin()函数的用法实例详解
Sep 16 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
Apr 19 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
Aug 19 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 魔术函数使用说明
2010/05/14 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
php自定义apk安装包实例
2014/10/20 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
vue实现图片上传功能
2020/05/28 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
Python闭包的两个注意事项(推荐)
2017/03/20 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
前台接待岗位职责
2013/12/03 职场文书
学术会议邀请函范文
2014/01/22 职场文书
安全大检查实施方案
2014/02/22 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
复兴之路观后感
2015/06/02 职场文书
MySQL 5.7常见数据类型
2021/07/15 MySQL