jQuery事件绑定函数:on()与bind()的差别

时间:2022-12-09 19:46:13

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()来替代它得作用,不建议使用此方法。