使用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实现div跟随鼠标移动
Aug 20 jQuery
jQuery表单验证之密码确认
May 22 jQuery
JQuery 选择器、DOM节点操作练习实例
Sep 28 jQuery
jQuery实现的form转json经典示例
Oct 10 jQuery
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
jQuery实现动态加载(按需加载)javascript文件的方法分析
May 31 jQuery
jQuery实现每日秒杀商品倒计时功能
Sep 06 jQuery
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
Mar 20 jQuery
jquery css实现流程进度条
Mar 26 jQuery
jQuery实现广告显示和隐藏动画
Jul 04 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中动态HTML的输出技术
2006/10/09 PHP
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
Smarty变量用法详解
2016/05/11 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
2016/09/19 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
微信小程序实现电子签名功能
2020/07/29 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
python批量生成本地ip地址的方法
2015/03/23 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
python实现大量图片重命名
2020/03/23 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
英国健身超市:Fitness Superstore
2019/06/17 全球购物
《花的勇气》教后反思
2014/02/12 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
信息技术课教学反思
2016/02/23 职场文书
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python