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

首頁 > 編程 > JavaScript > 正文

原生js事件的添加和刪除的封裝

2019-11-20 14:22:59
字體:
來源:轉載
供稿:網友

在IE瀏覽器中添加或刪除事件用attachEvent、detachEvent。在其他標準瀏覽器中則用addEventListener、removeEventListener。下面的對事件的添加和刪除做了封裝。直接看代碼吧!

/*** @description 事件綁定,兼容各瀏覽器* @param target* 事件觸發對象* @param type* 事件* @param func* 事件處理函數*/function bind(target, type, func) {if (target.addEventListener) {// 非ie 和ie9target.addEventListener(type, func, false);} else if (target.attachEvent) { // ie6到ie8target.attachEvent("on" + type, func);} else {target["on" + type] = func; // ie5}}/*** @description 事件移除,兼容各瀏覽器* @param target* 事件觸發對象* @param type* 事件* @param func* 事件處理函數*/function unbind(target, type, func) {if (target.removeEventListener) {target.removeEventListener(type, func, false);} else if (target.detachEvent) {target.detachEvent("on" + type, func);} else {target["on" + type] = null;}}

其他補充關于addEventListener第三個參數的含義


addEventListener的第三個參數

W3C DOM里用來新增觸發事件的函數叫AddEventListener,不過我一直不知道這個函數的第三個參數是要做什么用的,總是隨便設,也沒發現差異再哪,前兩天看ppk on javascript終于看到說明了,至于很久以前就有的DOM的標準文件,我其實根本沒去找過這個參數的資訊。

這個參數叫做useCapture,是一個boolean值,就是true or false,如果送出true的話就是瀏覽器會使用Capture方式,false的話是Bubbling,只有在特定狀況下才會有影響,通常建議是false,而會有影響的情形是目標元素(target element)有祖先元素(ancestor element),而且也有同樣的事件對應函數,我想,看圖會比較清楚。

范例有兩層的div方塊

像這張圖所顯示的,我的范例有兩層div元素,而且都設定有click事件,一般來說,如果我在內層藍色的元素上click不只會觸發藍色元素的click事件,還會同時觸發紅色元素的click事件,而useCapture這個參數就是在控制這時候兩個click事件的先后順序。如果是false,那就會使用bubbling,他是從內而外的流程,所以會先執行藍色元素的click事件再執行紅色元素的click事件,如果是true,那就是capture,和bubbling相反是由外而內,會先執行紅色元素的click事件才執行藍色元素的click事件。附上兩個范例,capture和bubbling,兩個檔案只有差在此一參數不同,可以發現事件的發生順序不一樣了。

那如果不同層的元素使用的useCapture不同呢?就是會先從最外層元素往目標元素尋找設定為capture的事件,到達目標元素執行目標元素的事件后,再尋原路往外尋找設定為bubbling的事件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄石市| 临沂市| 汤原县| 上栗县| 南靖县| 墨竹工卡县| 临汾市| 通化县| 屏东县| 彰武县| 自贡市| 灵寿县| 嘉善县| 佛冈县| 门头沟区| 京山县| 普兰县| 孟津县| 马关县| 榕江县| 新巴尔虎左旗| 阿拉善左旗| 迁安市| 增城市| 如皋市| 江源县| 工布江达县| 崇文区| 凯里市| 阳新县| 松桃| 同江市| 武穴市| 芒康县| 盐城市| 漯河市| 团风县| 绥滨县| 杭州市| 游戏| 平安县|