使用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实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 jQuery
jQuery使用动画队列自定义动画操作示例
Jun 16 jQuery
jQuery实现的页面弹幕效果【测试可用】
Aug 17 jQuery
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
Jan 09 jQuery
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
Apr 28 jQuery
详解jQuery如何实现模糊搜索
May 10 jQuery
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
Sep 10 jQuery
jQuery实现王者荣耀手风琴效果
Jan 17 jQuery
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
Apr 30 jQuery
jQuery实现简单评论区功能
Oct 26 jQuery
使用jQuery实现购物车
Oct 29 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
我的论坛源代码(四)
2006/10/09 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
JS 继承实例分析
2008/11/04 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
Jquery $when done then的用法详解
2016/05/20 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Python检测生僻字的实现方法
2016/10/23 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
英国家电直销:Appliances Direct
2016/09/22 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
运动鞋、街头服装、手表和手袋的实时市场:StockX
2020/11/25 全球购物
介绍一些UNIX常用简单命令
2014/11/11 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
教育专业自荐书范文
2013/12/17 职场文书
分厂厂长岗位职责
2013/12/29 职场文书
测控技术与仪器个人求职信范文
2013/12/30 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
会计学专业自荐信
2014/06/25 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
个人总结与自我评价
2014/09/18 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
党员理论学习心得体会
2016/01/21 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js