国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

使用jQuery卸載全部事件的思路詳解

2019-11-19 16:56:04
字體:
來源:轉載
供稿:網友

說到事件, 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卸載全部事件的思路詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岱山县| 望江县| 顺昌县| 麻江县| 秭归县| 安康市| 衡东县| 尤溪县| 沂源县| 天峨县| SHOW| 上高县| 紫金县| 鸡东县| 驻马店市| 遂昌县| 天全县| 汉源县| 兴化市| 荣成市| 卢湾区| 江口县| 上高县| 忻城县| 景宁| 山东省| 夏邑县| 河东区| 永丰县| 桂东县| 云龙县| 贵州省| 金湖县| 嵩明县| 嘉峪关市| 元谋县| 安达市| 亚东县| 和静县| 衢州市| 衡山县|