jQuery从1.7+版本开始,提供了on()和off()进行事件处理函数的绑定和取消。on()和bind()这两个方法有相同的地方也有不同的地方.
bind(type,[data],fn);
on(type,[selector],[data],fn);
两者的区别就在于是否支持selector这个参数值。如果使用on的时候,不设置selector,那么on与bind就没有区别了。
e<div id="parent"> <input type = "button" value="a" id=“a”> <input type = "button" value="b" id=“b”> </div>
上面的代码中,如果我们使用bind()在parent上绑定了click事件处理函数,当点击a或者b按钮的时候,都会执行事件处理函数。如果我们希望点击a的时候触发,点击b的时候不触发,那么可以使用on,代码如下:
$("#parent").on("click","#a",function(){ alert($(this).attr("id")); })
bind方法无法实现该功能。
还有一点需要注意:on绑定的事件处理函数,对于未来新增的元素一样可以的,和delegate效果相同,而bind则不行。
delegate用法与on()相同,只是参数的顺序不同:
delegate([selector],type,[data],fn);
还有一个live()方法,在jQuery1.9中被移除了,完全可以使用on()来替代它得作用,不建议使用此方法。