使用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将标签元素的高设为屏幕的百分比
Apr 19 jQuery
jQuery Validate 校验多个相同name的方法
May 18 jQuery
详解jquery选择器的原理
Aug 01 jQuery
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
jQuery仿移动端支付宝键盘的实现代码
Aug 15 jQuery
菊花转动的jquery加载动画效果
Aug 19 jQuery
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 jQuery
Jquery获取radio选中值实例总结
Jan 17 jQuery
jQuery/JS监听input输入框值变化实例
Oct 17 jQuery
jQuery实现视频展示效果
May 30 jQuery
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
jQuery实现移动端扭蛋机抽奖
Nov 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
php异常处理技术,顶级异常处理器
2012/06/13 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
2011/10/21 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Python多进程同步简单实现代码
2016/04/27 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
Python requests库用法实例详解
2018/08/14 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
解决python flask中config配置管理的问题
2019/07/26 Python
python将字母转化为数字实例方法
2019/10/04 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
最新销售员个人自荐信
2013/09/21 职场文书
捐书寄语赠言
2014/01/18 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
质量保证书格式模板
2015/02/27 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
长征观后感
2015/06/09 职场文书
python 安全地删除列表元素的方法
2022/03/16 Python