使用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 相关文章推荐
BootStrap中jQuery插件Carousel实现轮播广告效果
Mar 27 jQuery
jQuery用noConflict代替$的实现方法
Apr 12 jQuery
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
May 01 jQuery
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
使用jQuery实现简单的tab框实例
Aug 22 jQuery
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
Jun 18 jQuery
jquery检测上传文件大小示例
Apr 26 jQuery
jQuery实现鼠标滑动切换图片
May 27 jQuery
基于ajax及jQuery实现局部刷新过程解析
Sep 12 jQuery
jQuery编写QQ简易聊天框
Aug 27 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
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
2020/01/18 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
Python切换pip安装源的方法详解
2016/11/18 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
什么是URL
2015/12/13 面试题
个人求职信范例
2014/01/29 职场文书
风险评估实施方案
2014/03/09 职场文书
服装采购员岗位职责
2014/03/15 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
家庭贫困证明
2015/06/16 职场文书
R9700摩机记
2022/04/05 无线电