js事件委托

  • 事件委托的使用地點
  • 事件委托的原理
  • jQuery中封裝耳朵事件委托

問題

將ajax請求回來的數(shù)據(jù)動態(tài)的拼接到html骨架中時,要給這些元素添加事件。

    <ul id="main">
    </ul>
    ...
    $.ajax({
       url:"",
       data:"",
       success:function(data){
           for(var i=data.length-1;i>=0;i--){
               ($("<li></li>"),{
                  class:'data[0].class'
               }).appendTo("#main");
           } 
       }
    })

可以給li直接添加onclick事件。
或者使用事件委托(event delegation)。

原理

事件委托是為父元素添加一個監(jiān)聽器,當(dāng)子元素要添加事件時,事件監(jiān)聽器會分析冒泡上來的事件,從而找到是哪一個子元素執(zhí)行的事件

基本寫法

    // 為父元素添加監(jiān)聽器...
    document.getElementById("main").addEventListener("click",function(e) {
        // e.target是被點擊的元素,如果被點擊的是li元素
        if(e.target && e.target.nodeName == "LI") {
            // 找到目標(biāo)并輸出
            console.log("這個li的id為"+e.target.id);
        }
    });

當(dāng)然,這種方法在jQuery也有封裝

    $("div").delegate("button","click",function(){
      $("p").slideToggle();
    });

div標(biāo)簽下的button標(biāo)簽被點擊時,p標(biāo)簽顯示或隱藏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一直以來,對js的一些概念還是不清晰的,很多都沒有搞明白,今天無意間在群里見他們提起事件委托,所以查找了一些資料,...
    蝴蝶結(jié)199007閱讀 331評論 1 3
  • 定義:通俗的講,事件就是onclick,onmouseover,onmouseout等就是事件,委托呢,就是讓別人...
    JYOKETSU3閱讀 397評論 0 0
  • 前言 事件委托,也叫事件代理,是js事件中的一種常用技巧。事件委托的原理就是利用冒泡事件的機制,為一些節(jié)點的祖先節(jié)...
    zkhChris閱讀 574評論 0 3
  • 事件委托就是利用事件冒泡,只指定一個時間處理程序就可以管理某一類型的所有事例。 優(yōu)點:提高性能 JavaScrip...
    我真的好暴躁啊閱讀 282評論 0 0
  • 我們收取快遞有兩種方法:一是在特定的地點等快遞的到來,二是委托人代收?,F(xiàn)實當(dāng)中,我們大都采用委托的方案。而委托人接...
    饑人谷_oathy閱讀 812評論 0 2

友情鏈接更多精彩內(nèi)容