技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> JavaScript --> 使用jquery卸载全部事件

使用jquery卸载全部事件

浏览:816次  出处信息

   说到事件,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. Js事件监听封装(支持匿名函数)    (阅读:3432)
  2. jQuery事件编写进阶    (阅读:3266)
  3. jQuery事件的冒泡过程    (阅读:2873)
  4. js中鼠标滚轮事件详解    (阅读:2408)
  5. 关于Javascript的俩个有趣的探讨    (阅读:2261)
  6. 如何在关闭某个内核模块    (阅读:2220)
  7. javascript事件:获取事件对象getEvent函数    (阅读:2153)
  8. 基于事件的社会化网站    (阅读:1818)
  9. 一种生成事件脉络的方法    (阅读:1749)
  10. C#的设计缺陷(1):显式实现接口内的事件    (阅读:1370)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:前端用户模块
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1