Delegate是jQuery中的一種委托機制,可以提高代碼性能。它有兩個重要的作用:
第一,它可以適用于動態生成的元素。由于事件處理程序是基于靜態的元素,如果在生成元素后才綁定事件處理程序,就無法激活事件處理程序,這時候可以使用delegate。
$(document).delegate("#btn", "click", function(){ console.log("click"); });
上面的代碼表示選擇文檔,使用delegate()方法創建一個事件委托,委托“#btn”的click事件處理程序,這可以使動態生成的元素能夠綁定到事件處理程序。
第二,delegate()方法可以避免多個事件處理程序的綁定。當一些元素綁定了類似的事件處理程序時,我們可以通過委托機制把主邏輯綁定到頂層元素上,而不用每個元素都綁定處理程序。
- 1
- 2
- 3
上面的代碼表示用delegate()方法,將click事件綁定到list元素上,當點擊li標簽時,事件就會冒泡到頂層元素,頂層元素有具體的事件處理程序實現邏輯。這個委托機制類似于給每個li標簽都添加click事件。