事件代理的小tips

本文首發(fā)于我的個人博客绵咱,轉(zhuǎn)載請注明來源和作者信息

想必大家都知道知道事件代理的好處了江醇,不用綁定大量的事件,減少了代碼書寫量壶熏,同時也提高了性能。事件處理通常用來處理某一相同類型的事件浦译。


場景一

<ul>
  <li></li>
  <li></li>
  <li></li>
</ul>

我們可能通常會遇見這樣的情況棒假,尤其是在列表中溯职,就是要根據(jù)每個列表項的次序來執(zhí)行不同的函數(shù)。那我們怎樣獲取他在整個listItems里的次序呢帽哑?
就是利用indexOf方法谜酒。偽代碼如下:

 var ul=document.getElemenstByTagName('ul')[0];
 var listItems=ul.getElementsByTagName('li');
 ul.addEventListener('click',function(e){
    if(e.target.tagName.toLowerCase()=='li'){
      var idx=[].indexOf.call(listItems,e.target);
       doSomething(idx);//根據(jù)不同的次序執(zhí)行函數(shù)
    }
 },false);

場景二

<div>
<span class='active' id='a' data-index='1'>hello<i></i></span>
</div>

。我們可以通過e.target獲得當(dāng)前事件處理的目標(biāo)妻枕,通常我們獲得這個確定span元素的方法有
1. e.target.id=='a' 2. e.target.tagName/nodeName.toLowerCase()=='span' 3. e.target.className(e.target.classList.contains)=='active' 4. e.target.dataset.index==1
這個時候我們再給span綁定事件后再執(zhí)行就好了僻族。但是可是正如例子中所給,假如說我們也給<i></i>是icon(小圖標(biāo)),此時我事件作用的目標(biāo)是<i></i>屡谐,按我們的想法來說無論是作用到icon還是作用到span述么,我們都是想讓他執(zhí)行下去的。問題就在于此愕掏,作用的元素是確定元素的子(孫)元素那怎么辦度秘??饵撑?

好辦敷钾,判斷事件目標(biāo)是不是該元素的子(孫)元素就行了!R蘩妗阻荒!

var span=document.getElementsByTagName('span')[0];
var div=document.getElementsByTagName('div')[0];
div.addEventListener('click',function(e){
   var allChilds=span.getElementsByTagName('*');
   if(e.target.dataset.index==1||[].indexOf.call(allChilds,e.target)!=-1){
    doSomething();
   }
},false);

我們通過找到span元素的所有后代,這個一個nodeLists,然后判斷點擊的元素在不在這個集合里面众羡,從而判斷了點擊的元素是不是span的后代侨赡。這個技巧挺有用的,比如說還可以在搜索框自動完成的時候會遇到粱侣,當(dāng)搜索框失去焦點羊壹,suggest列表要消失,點擊頁面中的元素我們讓suggest框消失齐婴,但是點擊了suggest lists怎么辦油猫?先消失的話,就不能跳轉(zhuǎn)對應(yīng)的網(wǎng)址了柠偶?這個時候我們就要判斷點擊的目標(biāo)在不在suggest lists內(nèi)情妖,如果在的話就先跳轉(zhuǎn)再消失了。
詳情可了解autocomplete組件

本文來源于個人實踐诱担,不定期更新~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毡证,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蔫仙,更是在濱河造成了極大的恐慌料睛,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異恤煞,居然都是意外死亡屎勘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門居扒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挑秉,“玉大人,你說我怎么就攤上這事苔货∠牛” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵夜惭,是天一觀的道長姻灶。 經(jīng)常有香客問我,道長诈茧,這世上最難降的妖魔是什么产喉? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮敢会,結(jié)果婚禮上曾沈,老公的妹妹穿的比我還像新娘。我一直安慰自己鸥昏,他們只是感情好塞俱,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吏垮,像睡著了一般障涯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膳汪,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天唯蝶,我揣著相機(jī)與錄音,去河邊找鬼遗嗽。 笑死粘我,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痹换。 我是一名探鬼主播征字,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晴音!你這毒婦竟也來了柔纵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤锤躁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體系羞,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡郭计,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了椒振。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昭伸。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖澎迎,靈堂內(nèi)的尸體忽然破棺而出庐杨,到底是詐尸還是另有隱情,我是刑警寧澤夹供,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布灵份,位于F島的核電站,受9級特大地震影響哮洽,放射性物質(zhì)發(fā)生泄漏填渠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一鸟辅、第九天 我趴在偏房一處隱蔽的房頂上張望氛什。 院中可真熱鬧,春花似錦匪凉、人聲如沸枪眉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑰谜。三九已至,卻和暖如春树绩,著一層夾襖步出監(jiān)牢的瞬間萨脑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工饺饭, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留渤早,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓瘫俊,卻偏偏與公主長得像鹊杖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扛芽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程骂蓖,因...
    小菜c閱讀 6,358評論 0 17
  • 1.什么是Activity?問的不太多登下,說點有深度的 四大組件之一,一般的,一個用戶交互界面對應(yīng)一個activit...
    JoonyLee閱讀 5,728評論 2 51
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評論 25 707
  • 痛經(jīng)指經(jīng)期前后或行經(jīng)期間,出現(xiàn)下腹部痙攣性疼痛,并有全身不適被芳,嚴(yán)重影響日常生活者缰贝。 原發(fā)性痛經(jīng)也稱功能性痛經(jīng)。經(jīng)過...
    小小龍舞天閱讀 209評論 0 0
  • 早上醒來收到家長發(fā)的紅包畔濒,烏龍才想起今天是他生日剩晴,啊呀昨天忘記了還答應(yīng)徐老師去參加舞動。趕緊跟徐老師說侵状。徐老師說赞弥,...
    梁絳閱讀 188評論 0 0