读jQuery之十 事件模块概述


Posted in Javascript onJune 27, 2011

后面会详细分析jQuery.event.add/jQuery.event.remove/jQuery.event.trigger。

虽然事件模块代码很难读,但其提供的API接口还是很清晰的。如下
读jQuery之十 事件模块概述
1 添加事件(bind/one/live/delegate/hover/toggle)
bind 基本的添加事件函数。
one 添加只执行一次的事件函数。
live 事件代理(使用document代理)。
delegate 事件代理(使用指定元素代理)。
hover 模拟css的hover。
toggle 显示/隐藏。

bind/one/live 都是使用内部的jQuery.event.add 来完成事件添加。
delegate 内部调用的是live。
hover 内部使用mouseenter/mouseleave,而mouseenter/mouseleave又使用bind。
toggle 内部使用click,而click内部又调用的是bind。

实际上jQuery的一个each调用就给jQuery对象上增加了24个添加事件的快捷方法
如下图

如下图

读jQuery之十 事件模块概述


记住,bind调用的是jQuery.event.add,因此 jQuery.event.add 才是整个jQuery添加事件模块的核心。以上所有的方法都是在其之上构建的上层应用。如图

读jQuery之十 事件模块概述


2 删除事件 (unbind/die/undelegate)

unbind 删除事件基础方法。可以删除一个指定handler,还可以删除某类型事件的全部handler,甚至可以删除挂在element上的全部事件。其内部调用jQuery.event.remove。

die/undelegate 删除事件代理。 内部都使用unbind。


因此, jQuery.event.remove 才是整个jQuery删除事件模块的核心。unbind/die/undelegate都是在其之上构建的上层应用。如图

读jQuery之十 事件模块概述


3 触发事件(trigger/triggerHandler)

trigger 触发一个事件(会冒泡)

triggerHandler 触发一个事件(不会冒泡)


trigger/triggerHandler 内部调用的都是jQuery.event.trigger,因此jQuery.event.trigger 才是整个jQuery触发事件模块的核心。如图
读jQuery之十 事件模块概述

Javascript 相关文章推荐
在IE下:float属性会影响offsetTop的取值
Dec 22 Javascript
php+js实现倒计时功能
Jun 02 Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 Javascript
js实现全国省份城市级联下拉菜单效果代码
Sep 07 Javascript
Javascript闭包实例详解
Nov 29 Javascript
JS中mouseup事件丢失的原因与解决办法
Jun 14 Javascript
js 两数组去除重复数值的实例
Dec 06 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
Feb 26 Javascript
node实现socket链接与GPRS进行通信的方法
May 20 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
Aug 01 Javascript
Flutter实现仿微信底部菜单栏功能
Sep 18 Javascript
基于Vue的商品主图放大镜方案详解
Sep 19 Javascript
AeroWindow 基于JQuery的弹出窗口插件
Jun 27 #Javascript
jQuery表格行换色的三种实现方法
Jun 27 #Javascript
19个很有用的 JavaScript库推荐
Jun 27 #Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
Jun 27 #Javascript
Jsonp 跨域的原理以及Jquery的解决方案
Jun 27 #Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 #Javascript
基于JQuery实现CheckBox全选全不选
Jun 27 #Javascript
You might like
phpize的深入理解
2013/06/03 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
python发腾讯微博代码分享
2014/01/10 Python
获取Django项目的全部url方法详解
2017/10/26 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
Python 变量类型详解
2018/10/10 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
python raise的基本使用
2020/09/10 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
python 将Excel转Word的示例
2021/03/02 Python
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
运动会入场词200字
2014/02/15 职场文书
《阳光》教学反思
2014/02/23 职场文书
医药营销个人求职信
2014/04/12 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
建议书的格式
2014/05/12 职场文书
教师节标语大全
2014/10/07 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
Javascript之datagrid查询详解
2021/09/15 Javascript