使用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加载单文件vue组件的方法
Jun 20 jQuery
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
zTree jQuery 树插件的使用(实例讲解)
Sep 25 jQuery
jQuery封装animate.css的实例
Jan 04 jQuery
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
jQuery提示框插件SweetAlert用法分析
Aug 05 jQuery
jQuery AJAX应用实例总结
May 19 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上传图片存入数据库示例分享
2014/03/11 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
深入浅析php json 格式控制
2015/12/24 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
php并发加锁示例
2016/10/17 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
dwr spring的集成实现代码
2009/03/22 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
vue做网页开场视频的实例代码
2017/10/20 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
大专应届生个人简历的自我评价
2013/10/15 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
个人年底工作总结
2015/03/10 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
Django使用redis配置缓存的方法
2021/06/01 Redis
MySQL RC事务隔离的实现
2022/03/31 MySQL
浅谈Redis缓冲区机制
2022/06/05 Redis