使用jQuery卸载全部事件的思路详解


Posted in jQuery onApril 03, 2017

说到事件, jquery 做了不少,当然也有 data 的很多功劳,因为原生 js 不支持匿名卸载事件的,而她为了开发者好用支持了匿名的

匿名事件的思路

首先她会判断目标是否是元素或者对象,如果是元素,则在元素上打一个标识( expando )然后值是生成的一个 guid ,并在缓存对象下建立一个缓存,比如:

$.cache={
  '2': {
    data: {},
    events: {},
    handle: function(){}
  },
}

然后会在你触发元素事件时拿元素上的标识去往缓存里的 events 里找,并会有是否委托,选择器等判断,然后最终触发,卸载的时候其实是拿缓存里的 handle 卸载的,因为是一个...

如果目标不是元素,比如是一个 window 那么她会直接往目标上添加标识,比如: window[$.expando]

其实事件跟缓存有很深的关系,她们是蕾丝~

卸载全部事件

清空标识

这里的标识包括元素上的和对象上的

$('*').add(window).each(function(){
  try{
    delete this[$.expando];
  }catch(e){}
});

ps:因为 window 不是元素,但会有一些事件,比如 scroll , resize 等

删除缓存

这里的缓存包括元素的缓存和对象缓存

window[$.expando] = {}
$.cache = {};

以上所述上小编给大家介绍的使用jQuery卸载全部事件的思路详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

jQuery 相关文章推荐
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
jquery拖动改变div大小
Jul 04 jQuery
jQuery实现选中行变色效果(实例讲解)
Jul 06 jQuery
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
Aug 01 jQuery
jQuery选择器之表单元素选择器详解
Sep 19 jQuery
jquery点击回车键实现登录效果并默认焦点的方法
Mar 09 jQuery
jQuery实现仿京东防抖动菜单效果示例
Jul 06 jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
jQuery中实现text()的方法
Apr 04 jQuery
JQuery animate动画应用示例
May 14 jQuery
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 jQuery
jquery实现拖拽小方块效果
Dec 10 jQuery
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
Apr 03 #jQuery
基于JQuery和原生JavaScript实现网页定位导航特效
Apr 03 #jQuery
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
Apr 02 #jQuery
如何选择jQuery版本 1.x? 2.x? 3.x?
Apr 01 #jQuery
jQuery UI Grid 模态框中的表格实例代码
Apr 01 #jQuery
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 #jQuery
jQuery实现Select下拉列表进行状态选择功能
Mar 30 #jQuery
You might like
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
php blowfish加密解密算法
2016/07/02 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
Node.js事件驱动
2015/06/18 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
详解Immutable及 React 中实践
2018/03/01 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
python赋值操作方法分享
2013/03/23 Python
python 生成器协程运算实例
2017/09/04 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
公司业务员岗位职责
2014/03/18 职场文书
就业意向书范文
2014/04/01 职场文书
文明城市创建标语
2014/06/16 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL