jQuery新的事件绑定机制on()示例应用

 更新时间:2014年07月18日 11:31:04   投稿:whsnow  
从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一处理事件绑定,下面通过示例为大家介绍下

今天浏览jQuery的deprecated列表,发现live()和die()在里面了,赶紧看了一下,发现从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一处理事件绑定。因为在此之前有bind(), live(), delegate()等方法来处理事件绑定,jQuery从性能优化以及方式统一方面考虑决定推出新的函数来统一事件绑定方法并且替换掉以前的方法。

on(events,[selector],[data],fn)

events:一个或多个用空格分隔的事件类型和可选的命名空间,如"click"或"keydown.myPlugin" 。

selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代。如果选择器为null或省略,当它到达选定的元素,事件总是触发。

data:当一个事件被触发时要传递event.data给事件处理函数。

fn:该事件被触发时执行的函数。 false 值也可以做一个函数的简写,返回false。

替换bind()

当第二个参数'selector'为null时,on()和bind()其实在用法上基本上没有任何区别了,所以我们可以认为on()只是比bind()多了一个可选的'selector'参数,所以on()可以非常方便的换掉bind()

替换live()

在1.4之前相信大家非常喜欢使用live(),因为它可以把事件绑定到当前以及以后添加的元素上面,当然在1.4之后delegate()也可以做类似的事情了。live()的原理很简单,它是通过document进行事件委派的,因此我们也可以使用on()通过将事件绑定到document来达到live()一样的效果。

live()写法

$('#list li').live('click', '#list li', function() { 
//function code here. 
});

on()写法

$(document).on('click', '#list li', function() { 
//function code here. 
});

这里的关键就是第二个参数'selector'在起作用了。它是一个过滤器的作用,只有被选中元素的后代元素才会触发事件。

替换delegate()
delegate()是1.4引入的,目的是通过祖先元素来代理委派后代元素的事件绑定问题,某种程度上和live()优点相似。只不过live()是通过document元素委派,而delegate则可以是任意的祖先节点。使用on()实现代理的写法和delegate()基本一致。

delegate()的写法

$('#list').delegate('li', 'click', function() { 
//function code here. 
});

on()写法

$('#list').on('click', 'li', function() { 
//function code here. 
});


貌似第一个和第二个参数的顺序颠倒了一下,别的基本一样。

总结

jQuery推出on()的目的有2个,一是为了统一接口,二是为了提高性能,所以从现在开始用on()替换bind(), live(), delegate吧。尤其是不要再用live()了,因为它已经处于不推荐使用列表了,随时会被干掉。如果只绑定一次事件,那接着用one()吧,这个没有变化。

相关文章

  • 浅谈jQuery操作类数组的工具方法

    浅谈jQuery操作类数组的工具方法

    在很多时候,JQuery的$()函数都返回一个类似数据的JQuery对象,例如$(‘div’)将返回div里面的所有div元素包装的JQuery对象。在这种情况下,JQuery提供了几个常用的属性和方法来操作JQuery对象。本文将对此进行介绍,下面跟着小编一起来看下吧
    2016-12-12
  • jQuery实现带有动画效果的回到顶部和底部代码

    jQuery实现带有动画效果的回到顶部和底部代码

    这篇文章主要介绍了jQuery实现带有动画效果的回到顶部和底部代码,涉及jQuery响应鼠标事件动态操作页面元素属性的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • jQuery实现ajax的嵌套请求案例分析

    jQuery实现ajax的嵌套请求案例分析

    这篇文章主要介绍了jQuery实现ajax的嵌套请求,结合具体实例形式分析了ajax嵌套请求的原理、实现方法及相关操作注意事项,需要的朋友可以参考下
    2019-02-02
  • jQuery选中select控件 无法设置selected的解决方法

    jQuery选中select控件 无法设置selected的解决方法

    select 控件的 option用jQuery动态添加,然后选中某项时,IE6不能执行(火狐没问题),用try{}catch(err){alert(err.description);}提示为“无法设置selected属性 未指明的错误”
    2010-09-09
  • jQuery中ajax的具体使用

    jQuery中ajax的具体使用

    本文将介绍jQuery中如何使用Ajax以及通过代码详解其使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • JavaScript揭秘:实现自动化连连看游戏

    JavaScript揭秘:实现自动化连连看游戏

    这篇文章主要介绍了JavaScript揭秘:实现自动化连连看游戏的相关资料,需要的朋友可以参考下
    2023-11-11
  • jquery使用ColorBox弹出图片组浏览层实例演示

    jquery使用ColorBox弹出图片组浏览层实例演示

    本示例使用Jquery的ColorBox插件弹出图片组浏览层,点击会弹出页中窗的效果同时带有关闭及上一个下一个的切换,个人感觉相当不错的弹出窗,感兴趣的你可不要错过了哈
    2013-03-03
  • uploader秒传图片到服务器完整代码

    uploader秒传图片到服务器完整代码

    这篇文章主要为大家详细介绍了uploader秒传图片到服务器的完整代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • jquery select动态加载选择(兼容各种浏览器)

    jquery select动态加载选择(兼容各种浏览器)

    jquery select动态加载选择,兼容各种浏览器包括ie6,在ie6下会报错,不过我们已有解决方法,感兴趣的朋友可以了解下,或许对你学习jquery有所帮助
    2013-02-02
  • jQuery访问json文件中数据的方法示例

    jQuery访问json文件中数据的方法示例

    这篇文章主要介绍了jQuery访问json文件中数据的方法,结合实力形式分析了jQuery事件响应及json文件的加载、读取、遍历等相关操作技巧,需要的朋友可以参考下
    2019-01-01

最新评论