使用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 23 jQuery
jQuery ajax动态生成table功能示例
Jun 14 jQuery
详解jquery选择器的原理
Aug 01 jQuery
jQuery实现锚点向下平滑滚动特效示例
Aug 29 jQuery
jquery+css实现下拉列表功能
Sep 03 jQuery
基于jquery实现五星好评
Nov 18 jQuery
jQuery实现动态显示select下拉列表数据的方法
Feb 05 jQuery
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
jQuery实现列表的增加和删除功能
Jun 14 jQuery
jQuery实现监听下拉框选中内容发生改变操作示例
Jul 13 jQuery
jQuery中ajax请求后台返回json数据并渲染HTML的方法
Aug 08 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
把PHP安装为Apache DSO
2006/10/09 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
PHP多文件上传类实例
2015/03/07 PHP
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
详谈python http长连接客户端
2017/06/12 Python
python和ruby,我选谁?
2017/09/13 Python
Python 加密与解密小结
2018/12/06 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
园长自我鉴定
2013/10/06 职场文书
企业活动策划方案
2014/06/02 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
交通处罚决定书
2015/06/24 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
高中化学教学反思
2016/02/22 职场文书
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL