一、事件委托簡介
1、什么是事件委托
事件委托是利用事件冒泡,只指定一個事件處理程序來管理某一類型的所有事件。
通俗的講,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是讓別人來做,這個事件本來是加在某些元素上的,然而你卻加到別人身上來做,完成這個事件。
2、為什么要用事件委托
(1)考慮一個ul,在li的數量非常少的時候,為每一個li添加事件當然會使用for循環;但是數量多的時候這樣做太浪費內存,長到上百上千上萬的時候,為每個li添加事件就會對頁面性能產生很大的影響。
(2)給一個ul里面的幾個li添加了事件但是如果動態又生成了li則剛生成的li不具備事件這時就需要用到委托。
3、作用:
1.性能要好
2.針對新創建的元素,直接可以擁有事件
4、事件委托原理
事件委托就是利用事件冒泡原理實現的!
事件冒泡:就是事件從最深節點開始,然后逐步向上傳播事件;
例:頁面上有一個節點樹,div > ul > li > a
比如給最里面的a 加一個click 事件,那么事件就會一層一層的往外執行,執行順序 a > li > ul > div, 有這樣一個機制,當我們給最外層的div 添加點擊事件,那么里面的ul , li , a 做點擊事件的時候,都會冒泡到最外層的div上,所以都會觸發,這就是事件委托,委托他們父集代為執行事件;
二、使用場景
•為DOM中的很多元素綁定相同事件;
•為DOM中尚不存在的元素綁定事件;
實例:
<body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> </ul> </body>
$(function () { $("ul").on("click","li",function () { alert(1); }) });