国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

JavaScript事件委托的技術(shù)原理探討示例_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:21:53
文檔

JavaScript事件委托的技術(shù)原理探討示例_javascript技巧

JavaScript事件委托的技術(shù)原理探討示例_javascript技巧:如今的JavaScript技術(shù)界里最火熱的一項(xiàng)技術(shù)應(yīng)該是事件委托(event delegation)'了。使用事件委托技術(shù)能讓你避免對特定的每個(gè)節(jié)點(diǎn)添加事件監(jiān)聽器;相反,事件監(jiān)聽器是被添加到它們的父元素上。事件監(jiān)聽器會(huì)分析從子元素冒泡上來的事件,找到是哪個(gè)子元素的事
推薦度:
導(dǎo)讀JavaScript事件委托的技術(shù)原理探討示例_javascript技巧:如今的JavaScript技術(shù)界里最火熱的一項(xiàng)技術(shù)應(yīng)該是事件委托(event delegation)'了。使用事件委托技術(shù)能讓你避免對特定的每個(gè)節(jié)點(diǎn)添加事件監(jiān)聽器;相反,事件監(jiān)聽器是被添加到它們的父元素上。事件監(jiān)聽器會(huì)分析從子元素冒泡上來的事件,找到是哪個(gè)子元素的事

如今的JavaScript技術(shù)界里最火熱的一項(xiàng)技術(shù)應(yīng)該是‘事件委托(event delegation)'了。使用事件委托技術(shù)能讓你避免對特定的每個(gè)節(jié)點(diǎn)添加事件監(jiān)聽器;相反,事件監(jiān)聽器是被添加到它們的父元素上。事件監(jiān)聽器會(huì)分析從子元素冒泡上來的事件,找到是哪個(gè)子元素的事件。基本概念非常簡單,但仍有很多人不理解事件委托的工作原理。這里我將要解釋事件委托是如何工作的,并提供幾個(gè)純JavaScript的基本事件委托的例子。

假定我們有一個(gè)UL元素,它有幾個(gè)子元素:
代碼如下:

  • Item 1

  • Item 2

  • Item 3

  • Item 4

  • Item 5

  • Item 6


  • 我們還假設(shè),當(dāng)每個(gè)子元素被點(diǎn)擊時(shí),將會(huì)有各自不同的事件發(fā)生。你可以給每個(gè)獨(dú)立的li元素添加事件監(jiān)聽器,但有時(shí)這些li元素可能會(huì)被刪除,可能會(huì)有新增,監(jiān)聽它們的新增或刪除事件將會(huì)是一場噩夢,尤其是當(dāng)你的監(jiān)聽事件的代碼放在應(yīng)用的另一個(gè)地方時(shí)。但是,如果你將監(jiān)聽器安放到它們的父元素上呢?你如何能知道是那個(gè)子元素被點(diǎn)擊了?

    簡單:當(dāng)子元素的事件冒泡到父ul元素時(shí),你可以檢查事件對象的target屬性,捕獲真正被點(diǎn)擊的節(jié)點(diǎn)元素的引用。下面是一段很簡單的JavaScript代碼,演示了事件委托的過程:
    代碼如下:

    // 找到父元素,添加監(jiān)聽器...
    document.getElementById("parent-list").addEventListener("click",function(e) {
    // e.target是被點(diǎn)擊的元素!
    // 如果被點(diǎn)擊的是li元素
    if(e.target && e.target.nodeName == "LI") {
    // 找到目標(biāo),輸出ID!
    console.log("List item ",e.target.id.replace("post-")," was clicked!");
    }
    });


    第一步是給父元素添加事件監(jiān)聽器。當(dāng)有事件觸發(fā)監(jiān)聽器時(shí),檢查事件的來源,排除非li子元素事件。如果是一個(gè)li元素,我們就找到了目標(biāo)!如果不是一個(gè)li元素,事件將被忽略。這個(gè)例子非常簡單,UL和li是標(biāo)準(zhǔn)的父子搭配。讓我們試驗(yàn)一些差異比較大的元素搭配。假設(shè)我們有一個(gè)父元素div,里面有很多子元素,但我們關(guān)心的是里面的一個(gè)帶有”classA” CSS類的A標(biāo)記:
    代碼如下:

    // 獲得父元素DIV, 添加監(jiān)聽器...
    document.getElementById("myDiv").addEventListener("click",function(e) {
    // e.target是被點(diǎn)擊的元素
    if(e.target && e.target.nodeName == "A") {
    // 獲得CSS類名
    var classes = e.target.className.split(" ");
    // 搜索匹配!
    if(classes) {
    // For every CSS class the element has...
    for(var x = 0; x < classes.length; x++) {
    // If it has the CSS class we want...
    if(classes[x] == "classA") {
    // Bingo!
    console.log("Anchor element clicked!");

    // Now do something here....

    }
    }
    }

    }
    });

    上面這個(gè)例子中不僅比較了標(biāo)簽名,而且比較了CSS類名。雖然稍微復(fù)雜了一點(diǎn),但還是很具代表性的。比如,如果某個(gè)A標(biāo)記里有一個(gè)span標(biāo)記,則這個(gè)span將會(huì)成為target元素。這個(gè)時(shí)候,我們需要上溯DOM樹結(jié)構(gòu),找到里面是否有一個(gè) A.classA 的元素。

    因?yàn)榇蟛糠殖绦騿T都會(huì)使用jQuery等工具庫來處理DOM元素和事件,我建議大家都使用里面的事件委托方法,因?yàn)檫@里工具庫里都提供了高級的委托方法和元素甄別方法。

    希望這篇文章能幫助你理解JavaScript事件委托的幕后原理,希望你也感受到了事件委托的強(qiáng)大用處!

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    JavaScript事件委托的技術(shù)原理探討示例_javascript技巧

    JavaScript事件委托的技術(shù)原理探討示例_javascript技巧:如今的JavaScript技術(shù)界里最火熱的一項(xiàng)技術(shù)應(yīng)該是事件委托(event delegation)'了。使用事件委托技術(shù)能讓你避免對特定的每個(gè)節(jié)點(diǎn)添加事件監(jiān)聽器;相反,事件監(jiān)聽器是被添加到它們的父元素上。事件監(jiān)聽器會(huì)分析從子元素冒泡上來的事件,找到是哪個(gè)子元素的事
    推薦度:
    標(biāo)簽: 原理 js javascript
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 99精品久久99久久久久 | 国产欧美综合精品一区二区 | 91中文视频 | 日韩专区欧美 | 欧美激情一区 | 国产一区二区不卡免费观在线 | 久久人精品 | 国产欧美另类久久精品91 | 日韩专区在线 | 国产不卡精品一区二区三区 | 伊人逼逼 | 国产成人综合精品一区 | 在线日韩亚洲 | 国产高清精品一级毛片 | 国产精品久久久 | 欧美3p在线观看一区二区三区 | 亚洲午夜一区二区三区 | 亚洲欧美中文日韩综合 | 国产六区| 久青草国产视频 | 欧美在线一 | 国产欧美一区二区精品久久久 | 亚洲国产精品免费在线观看 | 久久婷婷国产麻豆91天堂 | 欧美日韩国产高清视频 | 国产精品香蕉在线观看 | 国产区一区 | 亚洲欧洲日本在线观看 | 日韩欧美精品 | 亚欧国产| 99热成人精品国产免国语的 | 国产日韩欧美亚洲综合首页 | 欧美视频一区二区三区 | 国内精品视频一区二区三区 | 日韩亚洲欧美视频 | 欧美精品在线免费观看 | 鸣人x钢手 | 亚洲日韩精品欧美一区二区 | 干比网| 亚洲欧美日韩综合精品网 | 国产欧美91 |