美女91-美女18一级毛片免费看-美女18毛片免费视频-美女18毛片-美乃雀中文字幕在线一区-美美女高清毛片视频免费观看

蒙狼科技logo
設(shè)為首頁| 聯(lián)系我們
咨詢熱線: 13917498722
  您的位置: 首頁 > 網(wǎng)站資訊 > 行使事件委托來增強事件批量綁定的效率

行使事件委托來增強事件批量綁定的效率

發(fā)布日期:2017/6/12

百度權(quán)重查詢 站長交易 友情鏈接交換 網(wǎng)站監(jiān)控 服務(wù)器監(jiān)控 seo監(jiān)控

先說說為什么要討論這個話題,工作閱歷多一點的WEB前端工程師都知道,我們經(jīng)常需要對頁面上大量具有某種共性的節(jié)點綁定同樣的一個事件處理器,傳統(tǒng)的體例是將這些節(jié)點獲取為一個對象薈萃,然后對每個薈萃綁定一次事件,很顯然,當薈萃只有兩三個元素的時候,我們這樣做無所謂。但當數(shù)量達到幾十甚至幾百個的時候怎么辦呢?使用這種遍歷對象集依次進行綁定的體例勢必會造成很蛋疼的性能問題。特殊是在那些低端瀏覽器上。他們擁有著性能特別很是可悲的javascript詮釋引擎,這給我們那些要求頁面體驗和流暢度的工程師們帶來的無疑是很沉重的襲擊。

今天就給大家介紹一個名詞“事件委托”,高手就不要在這里嘲笑我了,我這都是寫給新手看看的。所謂“事件委托”,如同名字一樣,是我們將這個薈萃中每個元素的事件,委托給某一個元素來處理,這樣我們只需要綁定一個元素的某個事件,就可以達到我們所需要的效果。為了大家能夠清楚的了解其中的原理,我在這里不進行事件綁定的相關(guān)講解,綁定的時候只使用DOM0級方法,兼容所有瀏覽器即可。

不廢話,且看代碼,原理在代碼的注釋中寫得很具體

你也可以直接查看文章后面的無注釋代碼

//事件委托

//這里我們創(chuàng)建bind函數(shù),給了四個參數(shù)

//obj,需要綁定事件的節(jié)點,

//tar,在obj容器中的需要批量綁定事件的目標元素標簽名

//evName,需要綁定的事件名稱

//fn,需要為目標元素綁定的事件處理函數(shù)

var bind = function(obj,tar,evName,fn){

obj['on'+evName] = function(event){

var e = eventwindow.event,

//首先對event做兼容,window.event主要用于兼容IE

target = e.target e.srcElement,

//對target做兼容,e.srcElement主要用于兼容IE,這里獲取的是觸發(fā)事件的目標元素

bool = true;

//設(shè)置一個bool型變量,后面會用到

if(target != obj){

//這一步比較主要,判斷target是否和obj相等,目的在于區(qū)別觸發(fā)事件的元素是否為綁定事件的元素自己,假如是,很顯明不吻合要求,因為我們要觸發(fā)事件的對象應(yīng)該是綁定元素內(nèi)的某一些元素。

(function(){

//這里做了一個匿名函數(shù),主要用于循環(huán)判斷我們觸發(fā)事件的元素(target)是否在我們的目標元素(tar)內(nèi)

if(target.tagName != tar.toUpperCase()){

//判斷觸發(fā)事件的元素標簽名(tagName)是否和我們提供的目標元素的標簽名(tar)相等,

target = target.parentNode;

//假如不是目標元素,則尋找觸發(fā)事件元素的父元素,并修改target指向這個父元素

if(target!=obj){

//判斷修悛改后的target是否為我們綁定事件的元素

arguments.callee();

//假如不是我們綁定事件的元素,則重新運行這個匿名函數(shù)

}else{

bool = false;

//假如是這個我們綁定事件的元素,則休止重新運行這個匿名函數(shù),因為這代表我們的循環(huán)已經(jīng)達到了綁定事件的元素,再往外查找已經(jīng)沒有需要了,這里將bool設(shè)置為false

}

}

})();

//這里的空括號用于執(zhí)行匿名函數(shù)

if(bool){fn(target);}

//判斷是bool是否為true,假如為true,透露表現(xiàn)我們觸發(fā)事件的元素在目標元素(tar)內(nèi),運行事件處理函數(shù),并傳入目標元素對象,假如為false,則相反。

}

}

}

看完上面的代碼,難免大家有點迷糊,其實這里面有兩個要點,我來總結(jié)一下,大家便曉暢了

、通過給obj容器綁定事件,然后通過target來得到觸發(fā)這個事件的對象

第二、行使里面的匿名函數(shù)進行循環(huán),檢測觸發(fā)事件的元素是否為我們想要委托的對象

附上邏輯圖

無注釋版本代碼

var bind = function(obj,tar,evName,fn){

obj['on'+evName] = function(event){

var e = eventwindow.event,

target = e.target e.srcElement,

bool = true;

if(target != obj){

(function(){

if(target.tagName != tar.toUpperCase()){

target = target.parentNode;

if(target!=obj){

arguments.callee();

}else{

bool = false;

}

}

})();

if(bool){fn(target);}

}

}

}

本文來自:webzhan的前端技術(shù)博客





其他相關(guān)文章
  • 創(chuàng)意思考設(shè)計網(wǎng)站整體風格
  • 網(wǎng)站建設(shè)的技巧
  • 給新手站長網(wǎng)站數(shù)據(jù)快速分析攻略揭密
  • 提高搜索引擎排名技術(shù)之AJAX應(yīng)用
  • Hadoop 中 IPC 的源碼分析
  • 簡單實用!好流行的10個平面設(shè)計方法小結(jié)




  • 企業(yè)網(wǎng)站后臺使用
    購物網(wǎng)站后臺使用
    網(wǎng)站產(chǎn)品圖片的處理



    農(nóng)業(yè)銀行支付
    建設(shè)銀行支付
    郵政儲蓄銀行支付



    企業(yè)網(wǎng)站建設(shè)
    整站建設(shè)
    購物網(wǎng)站



    企業(yè)網(wǎng)站建設(shè)建議
    注冊適合自己的域名
    什么是虛擬主機




    售前咨詢QQ: 838821345
    售后服務(wù)QQ: 464698733
    應(yīng)急手機:13917498722


    微信掃一掃
    添加24小時微信客服


    郵箱:lang@MENGL.CN
    地址:上海寶山區(qū)城銀路555弄2號樓3樓
    ICP備案:滬ICP備12042844號-3
     滬公網(wǎng)安備:31011402002917號
    做網(wǎng)站 | 企業(yè)網(wǎng)站建設(shè) | 上海做網(wǎng)站 | 企業(yè)網(wǎng)站制作 | 做網(wǎng)站的公司 | 關(guān)于蒙狼 | 整站建設(shè) | 購物網(wǎng)站 | 企業(yè)網(wǎng)絡(luò)營銷 | 成功案例 | 加盟代理 | 在線訂單
    服務(wù)區(qū)域: 臨港新區(qū)做網(wǎng)站 徐匯做網(wǎng)站 閔行做網(wǎng)站 長寧做網(wǎng)站 虹口做網(wǎng)站 黃浦做網(wǎng)站 盧灣做網(wǎng)站 靜安做網(wǎng)站 浦東做網(wǎng)站 楊浦做網(wǎng)站 普陀做網(wǎng)站 閘北做網(wǎng)站 寶山做網(wǎng)站 嘉定做網(wǎng)站 松江做網(wǎng)站 昆山做網(wǎng)站
    Copyright 2012-2025 上海蒙狼網(wǎng)絡(luò)科技有限公司 aqdzp.cn All Rights Reserved
    主站蜘蛛池模板: 国产高清成人 | 日日干夜夜操视频 | 亚洲 欧洲 日韩 | 欧美日韩中文在线观看 | 五月天播播网 | 毛片专区| 日本一区二区三区在线播放 | 免费成年网| 欧美一级va在线视频免费播放 | 亚洲综合影院 | 五月天精品视频 | 亚洲性视频网站 | 国产精品理论片在线观看 | 香蕉资源 | 我要看黄色一级大片 | 国产特黄a级在线视频 | 91寡妇天天综合久久影院 | 人人干人人澡 | 色伊人影院 | 国产人成在线视频 | 国产婷婷色综合成人精品 | 一区二区三区视频在线 | 国产精品一区二区不卡的视频 | 色国产在线观看 | 看全黄大色黄大片老人做 | 国产三级日本三级美三级 | 国产亚洲高清在线精品99 | 久草色香蕉 | 亚洲午夜精品久久久久久人妖 | 99草在线| 在线观看欧美日韩 | 外国毛片 | 久久久久综合一本久道 | 日本欧美成人免费观看 | 欧美久在线观看在线观看 | 亚洲美女视频一区二区三区 | 日本欧美一区 | 女人l8毛片a一级毛片免费 | 国产区图片区小说区亚洲区 | 欧美特黄一级 | 黄色网址在线看 |