Delegate是jQuery中的一种委托机制,可以提高代码性能。它有两个重要的作用:
第一,它可以适用于动态生成的元素。由于事件处理程序是基于静态的元素,如果在生成元素后才绑定事件处理程序,就无法激活事件处理程序,这时候可以使用delegate。
$(document).delegate("#btn", "click", function(){ console.log("click"); });
上面的代码表示选择文档,使用delegate()方法创建一个事件委托,委托“#btn”的click事件处理程序,这可以使动态生成的元素能够绑定到事件处理程序。
第二,delegate()方法可以避免多个事件处理程序的绑定。当一些元素绑定了类似的事件处理程序时,我们可以通过委托机制把主逻辑绑定到顶层元素上,而不用每个元素都绑定处理程序。
- 1
- 2
- 3
上面的代码表示用delegate()方法,将click事件绑定到list元素上,当点击li标签时,事件就会冒泡到顶层元素,顶层元素有具体的事件处理程序实现逻辑。这个委托机制类似于给每个li标签都添加click事件。