更新時間:2023-06-15 來源:黑馬程序員 瀏覽量:
事件冒泡本身的特性,會帶來的壞處,也會帶來的好處,需要我們靈活掌握。生活中有如下場景:
班級中有100個學生, 快遞員有100個快遞, 如果一個個的送花費時間較長。同時每個學生領(lǐng)取的時候,也需要排隊領(lǐng)取,也花費時間較長,何如?
解決方案: 快遞員把100個快遞,委托給班主任,班主任把這些快遞放到辦公室,同學們下課自行領(lǐng)取即可。
優(yōu)勢: 快遞員省事,委托給班主任就可以走了。 同學們領(lǐng)取也方便,因為相信班主任。
程序中也有如此場景:
<ul> <li>知否知否,應(yīng)該有彈框在手</li> <li>知否知否,應(yīng)該有彈框在手</li> <li>知否知否,應(yīng)該有彈框在手</li> <li>知否知否,應(yīng)該有彈框在手</li> <li>知否知否,應(yīng)該有彈框在手</li> </ul>
點擊每個 li 都會彈出對話框,以前需要給每個 li 注冊事件,是非常辛苦的,而且訪問 DOM 的次數(shù)越多,這就會延長整個頁面的交互就緒時間。
事件委托也稱為事件代理, 在 jQuery 里面稱為事件委派。
事件委托的原理:不是每個子節(jié)點單獨設(shè)置事件監(jiān)聽器,而是事件監(jiān)聽器設(shè)置在其父節(jié)點上,然后利用冒泡原理影響設(shè)置每個子節(jié)點。
以上案例:給 ul 注冊點擊事件,然后利用事件對象的 target 來找到當前點擊的 li,因為點擊 li,事件會冒泡到 ul 上, ul 有注冊事件,就會觸發(fā)事件監(jiān)聽器。
事件委托的作用:事件委托中我們只操作了一次 DOM ,便提高了程序的性能。