亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

javascript事件監聽與事件委托實例詳解

2024-05-06 16:54:16
字體:
來源:轉載
供稿:網友

本文實例講述了javascript事件監聽與事件委托。分享給大家供大家參考,具體如下:

事件監聽與事件委托

在js中,常用到element.addEventListener()來進行事件的監聽。但是當頁面中存在大量需要綁定事件的元素時,這種方式可能會帶來性能影響。此時,我們可以用事件委托的方式來進行事件的監聽。

每個事件都經歷三個階段

  • 捕獲
  • 到達目標
  • 冒泡

事件委托需要用到事件的冒泡,冒泡就是事件發生時,上層會一層一層的接收這個事件。

如下頁面結構:

<body>  <div id="div1">    <div id="div2">      <button>按鈕</button>    </div>  </div></body>

當點擊按鈕,首先button接收到事件,然后向上層冒泡,接著id="div1"接收到事件,接著是id="div2",一直到達document的頂層。

所以可以添加一個事件處理器到父級,由他接收所有子節點的事件信息。這就是事件委托。

事件監聽與事件委托性能比較

通過構建若干個button元素,并為其綁定事件監聽器來比較事件監聽與事件委托的性能。

1.構建若干個button元素,并添加到body中

<!DOCTYPE html><html><head>  <meta charset="utf-8">  <title></title></head><body id='body'>  <script type="text/javascript">    var body = document.getElementById('body');    var fragment = document.createDocumentFragment();    for (var i = 0; i < 100; i++) {      var btn = document.createElement('button');      btn.id = i;      btn.className = 'btn';      btn.type = 'button';      btn.innerText = '按鈕'      fragment.appendChild(btn);    }    body.appendChild(fragment);  </script></body></html>

此時頁面生成了100個按鈕,id為0到99,class為'btn';fragment是一個文檔片段,相比較下面這種代碼的好處是

for(var i = 0;i<100;i++){  var btn=document.createElement('button');  body.appendChild(btn);}

前者頁面只重排一次,后者頁面重排了100次;所以若遇到大模塊添加dom時,最好使用fragment

2.為button綁定事件監聽器,并設置時間戳

var btn = document.querySelectorAll('.btn');var date1 = new Date();for (var i = 0; i < btn.length; i++) {    (function(i) {      btn[i].addEventListener('click', function() {        console.log(i);      });    })(i)}

3.給body綁定click事件,實現事件的委托

var date2 = new Date();body.addEventListener('click', function(e) {    var element = e.target;    if (element.className == 'btn') {      console.log(element.id);    }})var date3 = new Date();

下面我們來通過時間戳分析一下這兩種方式的性能。

console.log(date2 - date1);console.log(date3 - date1);

通過改變button的數量,得到以下數據(單位:ms):

在360兼容模式下:

  • 當button數量為100時,平均為 6 0
  • 當button數量為400時,平均為 20 0
  • 當button數量為1000時,平均為 48 0

在新版谷歌下:

  • 當button數量為1000時,平均為 3 0

可見當頁面中有大量元素需要綁定事件時,并不是所有的事件都會被觸發,而這時對所有需要監聽的元素都綁定事件處理器無疑是要花費代價的,而通過事件委托的方式可以很好的解決性能問題,不需要為每個元素都綁定事件監聽器。但是要寫一些邏輯代碼來判斷事件源。所以,如果你的web項目對性能要求極為苛刻,事件委托也不失于一種優雅的選擇

希望本文所述對大家JavaScript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91社区国产高清| 在线丨暗呦小u女国产精品| 亚洲美女视频网| 国产精品久久久久高潮| 久久精品这里热有精品| 国产精品∨欧美精品v日韩精品| 久久视频在线直播| 欧美日韩国产色视频| 久久精品视频一| 欧美激情网友自拍| 久久亚洲国产成人| 久久久久久有精品国产| 91po在线观看91精品国产性色| 国产精品久久久久久久久久久久久久| 欧美在线观看日本一区| 伦伦影院午夜日韩欧美限制| 日韩精品视频免费专区在线播放| 欧美最顶级的aⅴ艳星| 成人羞羞国产免费| 日本一区二三区好的精华液| 91精品国产高清久久久久久| 18一19gay欧美视频网站| 欧美激情亚洲精品| 人妖精品videosex性欧美| 麻豆一区二区在线观看| 欧洲亚洲妇女av| 午夜精品久久久久久久99热浪潮| 亚洲国产精品成人av| 亚洲电影免费观看高清完整版在线观看| 成人有码视频在线播放| 亚洲一区二区三区视频| 国产精品女主播| 5566成人精品视频免费| 亚洲激情视频在线播放| 日韩在线观看免费| 国产精品草莓在线免费观看| 欧美亚洲国产精品| 亚洲精品乱码久久久久久金桔影视| 日韩中文字在线| 久久久国产精品亚洲一区| 粉嫩老牛aⅴ一区二区三区| 精品久久久久久久大神国产| 91精品国产综合久久久久久蜜臀| 高清日韩电视剧大全免费播放在线观看| 国产亚洲视频在线观看| 国产精品女视频| 亚洲深夜福利网站| 色悠悠久久久久| 久久久亚洲国产| 国产美女91呻吟求| 久久99亚洲精品| 国内外成人免费激情在线视频| 亚洲天堂男人的天堂| 欧美性猛交xxxx富婆| 欧美电影免费观看高清完整| 欧美电影在线观看高清| 国产精品视频自拍| 欧美人与性动交a欧美精品| 久久久久久久久久久久久久久久久久av| 亚洲国产97在线精品一区| 亚洲a区在线视频| 精品久久久久久国产| 国产一区二区三区在线播放免费观看| 精品久久久久久久久久久久| 亚洲免费福利视频| 国产亚洲精品一区二区| 国产精品高清在线| 在线播放国产一区中文字幕剧情欧美| 欧美激情欧美狂野欧美精品| 精品性高朝久久久久久久| 亚洲精品在线观看www| 国产一区二区在线免费| 日韩欧美综合在线视频| 欧美精品激情视频| 日韩午夜在线视频| 国产精品日韩久久久久| 日韩女优人人人人射在线视频| 国产成人精品一区| 欧美一级电影在线| 国产婷婷色综合av蜜臀av| 久热精品视频在线免费观看| 秋霞成人午夜鲁丝一区二区三区| 91免费版网站入口| 操人视频在线观看欧美| 国产精品对白刺激| 国产精品爽爽ⅴa在线观看| 亚洲色图五月天| 777国产偷窥盗摄精品视频| 91热福利电影| 国产欧美一区二区三区视频| 成人激情电影一区二区| 欧美专区国产专区| 91热福利电影| 爽爽爽爽爽爽爽成人免费观看| 91久久国产精品91久久性色| 国产精品wwww| 欧美福利小视频| 狠狠久久亚洲欧美专区| 亚洲美女在线看| 日韩精品亚洲元码| 77777少妇光屁股久久一区| 在线成人一区二区| xxxxx91麻豆| 欧美在线视频网站| 欧美日韩在线影院| 国产成人精品国内自产拍免费看| 亚洲aa中文字幕| 中文字幕v亚洲ⅴv天堂| 国产成人97精品免费看片| 全色精品综合影院| 高清欧美性猛交xxxx黑人猛交| 日本精品久久中文字幕佐佐木| 日韩av在线播放资源| 亚洲成人中文字幕| 欧美日韩免费区域视频在线观看| 亚洲精品免费网站| 日韩在线欧美在线| 亚洲黄色免费三级| 欧美最猛性xxxxx亚洲精品| 国产欧美一区二区三区视频| 另类视频在线观看| 亚洲人线精品午夜| 一本色道久久综合亚洲精品小说| 亚洲美女av网站| 国产欧美日韩综合精品| 国产精品视频区| 国产精品视频在线观看| 日本一区二区三区在线播放| 国产精品男人爽免费视频1| 91香蕉国产在线观看| 中文字幕日韩电影| 亚洲性生活视频在线观看| 久久久久久久一区二区三区| 51色欧美片视频在线观看| 国产成人精品国内自产拍免费看| 日韩中文视频免费在线观看| 国产视频欧美视频| 成人黄色av网| 欧美激情精品久久久久久大尺度| 夜夜躁日日躁狠狠久久88av| 疯狂做受xxxx欧美肥白少妇| 曰本色欧美视频在线| 欧美性色视频在线| 国产69精品久久久久9999| 欧美一级大片在线免费观看| 日韩av中文字幕在线播放| 久久99精品久久久久久青青91| 高清欧美性猛交xxxx黑人猛交| 欧美激情免费视频| 日韩欧美国产一区二区| 欧美日韩精品在线视频| 国产一区在线播放| 韩国日本不卡在线| 久久免费视频网站| 欧美激情性做爰免费视频| 亚洲午夜av电影| 69久久夜色精品国产69乱青草| 欧美亚洲伦理www| 日本一区二区三区在线播放| 亚洲国产成人精品女人久久久| 久久精品视频在线播放| www.精品av.com| 97国产在线观看| 亚洲欧美色婷婷|