最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年04月03日 10:07:50   投稿:mrr  
本文是小編給大家?guī)淼膉query卸載全部事件的思路,非常不錯,具有參考借鑒價值,需要的朋友一起看看吧!

說到事件, jquery 做了不少,當然也有 data 的很多功勞,因為原生 js 不支持匿名卸載事件的,而她為了開發(fā)者好用支持了匿名的

匿名事件的思路

首先她會判斷目標是否是元素或者對象,如果是元素,則在元素上打一個標識( expando )然后值是生成的一個 guid ,并在緩存對象下建立一個緩存,比如:

$.cache={
  '2': {
    data: {},
    events: {},
    handle: function(){}
  },
}

然后會在你觸發(fā)元素事件時拿元素上的標識去往緩存里的 events 里找,并會有是否委托,選擇器等判斷,然后最終觸發(fā),卸載的時候其實是拿緩存里的 handle 卸載的,因為是一個...

如果目標不是元素,比如是一個 window 那么她會直接往目標上添加標識,比如: window[$.expando]

其實事件跟緩存有很深的關系,她們是蕾絲~

卸載全部事件

清空標識

這里的標識包括元素上的和對象上的

$('*').add(window).each(function(){
  try{
    delete this[$.expando];
  }catch(e){}
});

ps:因為 window 不是元素,但會有一些事件,比如 scroll , resize 等

刪除緩存

這里的緩存包括元素的緩存和對象緩存

window[$.expando] = {}
$.cache = {};

以上所述上小編給大家介紹的使用jQuery卸載全部事件的思路詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

相關文章

最新評論

东阳市| 和平区| 盘锦市| 寻甸| 双流县| 山西省| 聂荣县| 东光县| 贵港市| 揭东县| 宜君县| 甘洛县| 江门市| 岚皋县| 阿勒泰市| 六盘水市| 衢州市| 张家港市| 嵩明县| 永寿县| 遂平县| 射阳县| 竹溪县| 康保县| 东光县| 宕昌县| 岗巴县| 眉山市| 岑溪市| 大英县| 资中县| 白玉县| 休宁县| 阜新| 定西市| 河源市| 法库县| 定陶县| 茶陵县| 湛江市| 巴楚县|