深入理解jQuery中live与bind方法的区别

 更新时间:2013年12月18日 09:44:28   作者:  
本篇文章主要是对jQuery中live与bind方法的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助

注意如果是通过jq添加的层和对象一定要用live(),用其他的都不起作用

live的缺点就是,运行完以后不释放空间,太多的使用会占用更多的内存,bind()则点击完以后释放空间

区别一:

Click here

可以给这个元素绑定一个简单的click事件:

$('.clickme').bind('click', function() {
$('body').append('

Another target
');
});

当点击了元素,就会弹出一个警告框。然后,想象一下这之后有另一个元素添加进来了。

尽管这个新的元素也能够匹配选择器 ".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。

.live() 就提供了对应这种情况的方法。如果我们是这样绑定click事件的:

$('.clickme').live('click', function() {
alert("Live handler called.");
});

然后再添加一个新元素:

$('body').append('

Another target
');

然后再点击新增的元素,他依然能够触发事件处理函数。

 

区别二:

(1)bind方法可以绑定任何JavaScript的事件,而live方法在jQuery1.3的时候只支持click, dblclick, keydown, keypress,keyup,mousedown, mousemove, mouseout, mouseover, 和 mouseup.在jQuery 1.4.1中,甚至也支持 focus 和 blue事件了(映射到更合适,并且可以冒泡的focusin和focusout上)。另外,在jQuery 1.4.1中,也能支持hover(映射到"mouseenter mouseleave")。

(2)live() 并不完全支持通过DOM遍历的方法找到的元素。取而代之的是,应当总是在一个选择器后面直接使用 .live()方法。

(3)当一个元素采用live方法进行事件的绑定的时候,如果想阻止事件的传递或冒泡,就要在函数中return false,仅仅调用stopPropagation()是无法实现阻止事件的传递或者冒泡的

相关文章

  • jQuery 源码分析笔记(2) 变量列表

    jQuery 源码分析笔记(2) 变量列表

    在初始化jQuery对象的代码开始之前声明了一大堆变量。主要包括:全局变量的备份;处理字符串用的正则表达式;检测浏览器的正则表达式;对核心函数的引用备份。这里略过大部分,只说两种:全局变量和浏览器检测。
    2011-05-05
  • 使用jquery获取网页中图片高度的两种方法

    使用jquery获取网页中图片高度的两种方法

    使用jquery获取网页中图片的高度其实很简单,目前有两种不错的方法可以实现,下面为大家详细介绍下,有所疑惑的你可以参考下
    2013-09-09
  • jquery果冻抖动效果实现方法

    jquery果冻抖动效果实现方法

    这篇文章主要介绍了jquery果冻抖动效果实现方法,涉及animate方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • jqGrid表格应用之新增与删除数据附源码下载

    jqGrid表格应用之新增与删除数据附源码下载

    jqGrid可以结合fancybox等插件完成超酷的弹出层效果,通过与php后台交互,可以轻松完成数据的添加与详情查看,而这个过程完全是一个ajax异步通信过程,是一个非常友好的富客户端应用,本文给大家介绍jqGrid表格应用之新增与删除数据,需要的朋友参考下
    2015-12-12
  • 功能强大的jquery.validate表单验证插件

    功能强大的jquery.validate表单验证插件

    这篇文章主要为大家详细介绍了功能强大的jquery.validate表单验证插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • jquery Firefox3.5中操作select的问题

    jquery Firefox3.5中操作select的问题

    不过最近安装了FF3.5正式版,发现这种方法在它下面得不到值,就去看jquery的帮助文档,在文档中对select选中的引用是用如下方法
    2009-07-07
  • 解决IE7中使用jQuery动态操作name问题

    解决IE7中使用jQuery动态操作name问题

    IE7中无法使用Jquery动态操作页面元素的name属性,怎么解决这个问题呢?下面小编给大家带来了解决IE7中使用jQuery动态操作name问题,需要的朋友参考下吧
    2017-08-08
  • jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码

    jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码

    这篇文章主要介绍了jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码,涉及jQuery控制页面元素样式动态变换的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • jQuery使用ajax跨域获取数据的简单实例

    jQuery使用ajax跨域获取数据的简单实例

    下面小编就为大家带来一篇jQuery使用ajax跨域获取数据的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • jQuery对象初始化的传参方式

    jQuery对象初始化的传参方式

    本文简单介绍了jQuery对象初始化传参方式,以及具体的示例,是篇非常不错的文章,这里推荐给小伙伴们。
    2015-02-02

最新评论