文檔碎片和事件委托

文檔碎片 ——

在你需要用js創(chuàng)建多個(gè)節(jié)點(diǎn)時(shí)着倾,可以使用document.createDocumentFragment()
例子

var frag = document.createDocumentFragment();

  for(var x = 0; x < 10; x++) {
     var li = document.createElement("li"); 
     li.innerHTML = "List item " + x;
     frag.appendChild(li);
    }

  listNode.appendChild(frag)
   如果使用原先的一個(gè)元素一個(gè)元素的添加墅拭,添加多個(gè)將會(huì)影響js引擎的性能,使用createDocumentFragment()就會(huì)請(qǐng)求一次样刷,減少了請(qǐng)求次數(shù),提高了js引擎的效率。

target——JS屬性

target 事件屬性可返回事件的目標(biāo)節(jié)點(diǎn)(觸發(fā)該事件的節(jié)點(diǎn))温圆,如生成事件的元素、文檔或窗口孩革。

K昵浮!事件委托所必須的屬性Oヲ凇刨裆!

語(yǔ)法:
event.target    
event.target.nodeName   //獲取事件觸發(fā)元素標(biāo)簽name(li,p...)    
event.target.id       //獲取事件觸發(fā)元素id    
event.target.className  //獲取事件觸發(fā)元素classname    
event.target.innerHTML  //獲取事件觸發(fā)元素的內(nèi)容(li)

事件委托——

給父元素添加監(jiān)聽(tīng)事件澈圈,通過(guò)e.target 獲取點(diǎn)擊事件,通過(guò).nodeName獲取節(jié)點(diǎn)名帆啃,( 此方法都是大寫(xiě))瞬女;
事件委托也可以稱(chēng)作事件代理,它的主要實(shí)現(xiàn)是依據(jù)事件冒泡的機(jī)制努潘,一個(gè)交互好的網(wǎng)頁(yè)離不開(kāi)各種復(fù)雜的事件诽偷,但是事件太多會(huì)造成網(wǎng)頁(yè)性能下降,有內(nèi)存泄漏的風(fēng)險(xiǎn)疯坤。這個(gè)時(shí)候报慕,就需要事件委托和代理了,使對(duì)象压怠,不被直接觸發(fā)眠冈,避免內(nèi)存泄漏和網(wǎng)頁(yè)性能下降。
重要屬性:
e.target——可返回事件的目標(biāo)節(jié)點(diǎn)(觸發(fā)該事件的節(jié)點(diǎn))菌瘫,如生成事件的元素蜗顽、文檔或窗口 e.srcElement——ie下的方法
注:e.target通常只是獲取了當(dāng)前節(jié)點(diǎn)的位置,并不知道是什么節(jié)點(diǎn)名稱(chēng)雨让,這里我們用nodeName(獲取值大寫(xiě))來(lái)獲取具體是什么標(biāo)簽名雇盖,進(jìn)而對(duì)特定節(jié)點(diǎn)的只進(jìn)行操作例子

<body> 
<div id="box"> 
      <div id="div">
         <ul> 
              <li>我是Li</li> 
              <p>我是p</p> 
              <span>我是span</span>
              <li>我是Li</li> 
              <li>我是Li</li> 
              <li>我是Li</li> 
              <span>我是span</span> 
              <li>我是Li</li>
              <li>我是Li</li>
        </ul> 
    </div>
</div> 
</body>
 <script type="text/javascript"> 
document.querySelector("div").addEventListener("click",
    function(e){ 
          e.target.style.backgroundColor="red"; 
          if(e.target.nodeName=="SPAN"){//也可以用toLowerCase()轉(zhuǎn)化成小寫(xiě)=="span" 
          e.target.style.backgroundColor="blue";
         } 
    }) 
</script>

想要對(duì)dom進(jìn)行多個(gè)操作,也可以用事件委托代理的方式

<body> 
  <div id="box"> 
       <div id="div"> 
          <ul> 
              <input type="button" id="add" value="添加" /><br /> 
              <input type="button" id="remove" value="刪除" /><br /> 
              <input type="button" id="move" value="移動(dòng)" /><br /> 
              <input type="button" id="select" value="選擇" /><br /> 
          </ul> 
       </div> 
  </div>
</body> 
<script type="text/javascript"> 
document.querySelector("div").addEventListener("click",
    function(e){ 
          if(e.target.nodeName=="INPUT"){ 
          switch(e.target.id){//通過(guò)swith進(jìn)行判斷達(dá)到綁定事件的作用 
              case'add': alert('添加');break;
              case'remove': alert('刪除'); break; 
              case 'move' : alert('移動(dòng)'); break; 
              case 'select' : alert('選擇'); break;
           }  
      } 
})
 </script>

用事件委托的方式栖忠,新添加的子元素也是帶有事件效果的崔挖,我們可以發(fā)現(xiàn),當(dāng)用事件委托的時(shí)候庵寞,根本就不需要去遍歷元素的子節(jié)點(diǎn)狸相,只需要給父級(jí)元素添加事件就好了,其他的都是在js里面的執(zhí)行捐川,這樣可以大大的減少dom操作卷哩,這才是事件委托的精髓所在。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末属拾,一起剝皮案震驚了整個(gè)濱河市将谊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渐白,老刑警劉巖尊浓,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異纯衍,居然都是意外死亡栋齿,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瓦堵,“玉大人基协,你說(shuō)我怎么就攤上這事」接茫” “怎么了澜驮?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)惋鸥。 經(jīng)常有香客問(wèn)我杂穷,道長(zhǎng),這世上最難降的妖魔是什么卦绣? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任耐量,我火速辦了婚禮,結(jié)果婚禮上滤港,老公的妹妹穿的比我還像新娘廊蜒。我一直安慰自己,他們只是感情好溅漾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布山叮。 她就那樣靜靜地躺著,像睡著了一般樟凄。 火紅的嫁衣襯著肌膚如雪聘芜。 梳的紋絲不亂的頭發(fā)上兄渺,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天缝龄,我揣著相機(jī)與錄音,去河邊找鬼挂谍。 笑死叔壤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的口叙。 我是一名探鬼主播炼绘,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼妄田!你這毒婦竟也來(lái)了俺亮?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤疟呐,失蹤者是張志新(化名)和其女友劉穎脚曾,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體启具,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡本讥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拷沸。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡色查,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出撞芍,到底是詐尸還是另有隱情秧了,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布勤庐,位于F島的核電站示惊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏愉镰。R本人自食惡果不足惜米罚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丈探。 院中可真熱鬧录择,春花似錦、人聲如沸碗降。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)讼渊。三九已至动看,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間爪幻,已是汗流浹背菱皆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挨稿,地道東北人仇轻。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像奶甘,于是被迫代替她去往敵國(guó)和親篷店。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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

  • 知識(shí)點(diǎn)整理來(lái)源于網(wǎng)上臭家。詳細(xì)的介紹推薦直接看API文檔疲陕。 DOM 功能 對(duì)元素的增查刪改① 查詢(xún)某個(gè)元素② 查詢(xún)某個(gè)...
    紙簡(jiǎn)書(shū)生閱讀 444評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)钉赁,斷路器蹄殃,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 鏈接地址:http://www.cnblogs.com/liugang-vip/p/5616484.htmlhtt...
    青春前行閱讀 813評(píng)論 0 0
  • 昨晚做的夢(mèng)非常零散,我自己都不太記得了橄霉。但是感覺(jué)挺真實(shí)的窃爷,噢邑蒋!是在街上逛,還有趕飛機(jī)按厘,哈哈哈医吊。 昨天丹推薦了豆瓣a...
    無(wú)盡夏小柒閱讀 135評(píng)論 0 0
  • 表弟在QQ在抖了我一下懒棉,我趕忙回復(fù):“草描??策严?穗慕?”∑薜迹“可以幫我充流量么逛绵?”。哦倔韭,我想起來(lái)了术浪,之前他用我的淘寶自己...
    閣樓上長(zhǎng)蘑菇閱讀 515評(píng)論 0 0