JavaScript / JQuery事件委託如何??

來源:互聯網
上載者:User

標籤:html   提高   ntb   指定   dom   jquery   訪問   區別   log   

一:什麼是事件委託?

 事件委託是利用事件冒泡,只指定一個事件處理常式來管理某一類型的所有事件。

事件委託就是利用事件冒泡原理實現的!事件冒泡:就是事件從最深節點開始,然後逐步向上傳播事件;例:頁面上有一個節點樹,div > ul  > li  >  a比如給最裡面的a 加一個click 事件,那麼事件就會一層一層的往外執行,執行順序 a > li > ul > div,  有這樣一個機制,當我們給最外層的div 添加點擊事件,那麼裡面的ul , li  , a  做點擊事件的時候,都會冒泡到最外層的div上,所以都會觸發,這就是事件委託,委託他們父集代為執行事件;  什麼是事件冒泡?js所謂的事件冒泡就是子級元素的某個事件被觸發,它的上階項目的該事件也被遞迴執行,jQuery中的事件委託就是用的冒泡。 

二:為什麼要用事件委託?

    1.在JavaScript中添加到頁面上的事件處理常式的個數直接關係到頁面的整體運行效能。為什麼呢?因為,每個事件處理函數都是對象,對象會佔用記憶體,記憶體中的對象越多,效能就越差。此外,必須事先指定所有的事件處理常式而導致的DOM訪問次數,會延遲整個頁面的互動就緒時間。

    2.對有很多個資料的表格以及很長的列表逐個添加事件,簡直就是噩夢。所以事件委託,能極大地提高頁面的運行效能,減少開發人員的工作量。

三:JavaScript中的例子

      我們以下面的HTML代碼為例,用事件委託的方式實現當按一下滑鼠某個li元素的時候,li元素的背景變成紅色。

<ul id = "lists">  <li>列表1</li>  <li>列表2</li>  
  <li>列表3</li>  
  <li>列表4</li>
</ul>

1 var lists = document.getElementById("lists"); 2 3 lists.addEventListener("click",function(event){ 4 5 var target = event.target; 6 //防止父元素ul也觸發事件 7 if(target.nodeName == "LI"){ 8 target.style.backgroundColor = "red"; 9 }10 })

 jQuery中的事件委託方式比較豐富,就以同樣的例子來說:
   1、用on方法
 $("#lists").on("click","li",function(event){3                 var target = $(event.target);4                 target.css("background-color","red");5             })

2.用delegate()方法
$("#lists").delegate("li","click",function(event){3                 var target = $(event.target);4                 target.css("background-color","red");5             })

3.用bind()方法
$("#lists").bind("click","li",function(event){3                 var target = $(event.target);4                 if(target.prop("nodeName")=="LI"){5                 target.css("background-color","red");}6             })
 
live和bind區別:
bind方法只能給當前存在的元素繫結事件,對於事後採用JS等方式新產生的元素無效,而live方法則正好彌補了bind方法的這個缺陷,它可以對後產生的元素也可以綁定相應的事件


JavaScript / JQuery事件委託如何??

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.