IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

使用jquery卸载全部事件

前端小武 2016-04-02 22:44:16 累计浏览 1,924 次
本机暂存

   说到事件,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 = {};

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,350)
  2. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,404)
  3. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  4. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,849)
  5. 天朝第二代身份证号码的验证机制 (累计阅读 14,762)
  6. HTML 5 的data-* 自定义属性 (累计阅读 14,349)
  7. 分享一个JQUERY颜色选择插件 (累计阅读 14,223)
  8. 什么是全栈工程师? (累计阅读 14,038)
  9. 快速排序(Quicksort)的Javascript实现 (累计阅读 11,735)
  10. 7 天打造前端性能监控系统 (累计阅读 11,187)