使用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初级教程之网站品牌列表效果
Aug 02 jQuery
jQuery实现的表格前端排序功能示例
Sep 18 jQuery
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
Sep 23 jQuery
基于jQuery解决ios10以上版本缩放问题
Nov 03 jQuery
jquery点击回车键实现登录效果并默认焦点的方法
Mar 09 jQuery
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
jQuery高级编程之js对象、json与ajax用法实例分析
Nov 01 jQuery
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 jQuery
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 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数据的提交与过滤基本操作实例详解
2016/11/11 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
Prototype Template对象 学习
2009/07/19 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
如何快速上手Vuex
2017/02/14 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
python自定义异常实例详解
2017/07/11 Python
django 发送手机验证码的示例代码
2018/04/25 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
python得到单词模式的示例
2018/10/15 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
仓库理货员岗位职责
2013/12/18 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
暑期培训班策划方案
2014/08/26 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
2014年销售部工作总结
2014/12/01 职场文书
工程移交协议书
2016/03/24 职场文书
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python
公历12个月名称的由来
2022/04/12 杂记