jQuery绑定事件方法及区别(bind,click,on,live,one)

 更新时间:2017年08月14日 16:37:30   作者:Lemon_code  
这篇文章主要介绍了jq绑定事件方法及区别,通过五种绑定方式使用bind()进行操作,并和one()进行区分,需要的朋友可以参考下

第一种方式:

$(document).ready(function(){
 $("#clickme").click(function(){
 alert("hello world click")
 })
})

第二种方式(简写方式为第一种):

$('#clickmebind').bind("click", function(){
 alert("Hello World bind");
});

第三种方式:

$('#clickmeon').on("click",function(){
 alert("hello world on")
}) 

注意:第三种方式只适用于jquery 1.7以上的版本

第四种方式:

$("button").live("click",function(){
 $("p").slideToggle();
});

第五种方式:

$("div").delegate("button","click",function(){
 $("p").slideToggle();
});

如果只绑定一次事件,那接着用one()吧,这个没有变化。

$(document).ready(function(){
  $("p").one("click",function(){
    $(this).animate({fontSize:"+=6px"});
  });
});

下面就来了解下它们之间的区别

bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数
$(“a”).bind(“click”,function(){alert(“ok”);});

live(type,[data],fn) 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的
$(“a”).live(“click”,function(){alert(“ok”);});

delegate(selector,[type],[data],fn) 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数
$(“#container”).delegate(“a”,”click”,function(){alert(“ok”);})

on(events,[selector],[data],fn) 在选择元素上绑定一个或多个事件的事件处理函数

最大的差别:bind()的事件函数只能针对已经存在的元素进行事件的设置。如果你想对动态创建的元素bind()事件,是没有办法达到效果的,但是live(),on(),delegate()均支持未来新添加元素的事件设置。

.bind()是直接绑定在元素上()
jquery1.7版本以前比较受推崇,1.7版本出来之后,官方已经不推荐用bind(),替代函数为on(),这也是1.7版本新添加的函数,同样,可以用来代替live()函数,live()函数在1.9版本已经删除;

.delegate()则是更精确的小范围使用事件代理,性能优于.live()(在Jquery1.7中已经移除)

.live()则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document
DOM节点上。和.bind()的优势是支持动态数据。(在Jquery1.7中已经移除,相应die()也移除)

live()函数和delegate()函数两者类似,但是live()函数在执行速度,灵活性和CSS选择器支持方面较delegate()差些

.on()则是最新的1.9版本整合了之前的三种方式的新事件绑定机制(在Jquery1.7中添加,相应off()也添加)

jquery1.4 及之前的版本,由.click() 或 bind()方法绑定的事件,不能适用脚本创建的新元素:即是说页面加载完成后,再动态创建的DOM元素并不能响应之前绑定的事件!

旧版本的处理方法是使用.live()方法来代替事件绑定.bind(),使得绑定的事件能适用脚本创建的新元素。

但自jq1.7版本开始,官方已明文表示不再推荐使用使用.live()方法,官方解释为:live()调用过程首先将事件方法绑定到了Document,然后,查找Document里是否有匹配元素。
这个过程对于性能来说可能比较浪费。官方推荐将.live()改成Delegate()方法,适用脚本创建的新元素。

jq1.8开始,官方又再次申明:如果你开发最新版本的jQuery,完全可以使用on()方法来处理所有的事件绑定,避免过多的方法调用,因为其实在最新版本的jQuery类库中,所有以上旧版方法在后面其实都是调用on()方法。

总结

jQuery推出on()的目的有2个,一是为了统一接口,二是为了提高性能,所以从现在开始用on()替换bind(), live(), delegate吧。

以上就是小编为大家整理的jq绑定事件方法及区别的全部内容啦~希望大家继续支持脚本之家~

相关文章

  • 基于jQuery实现响应式圆形图片轮播特效

    基于jQuery实现响应式圆形图片轮播特效

    这篇文章主要介绍了基于jQuery实现响应式圆形图片轮播特效,mislider插件可以将图片以圆形图片显示,然后使图片无限循环形成轮播图或旋转木马特效,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • jQuery zTree 异步加载添加子节点重复问题

    jQuery zTree 异步加载添加子节点重复问题

    zTree 是一个依靠 jQuery 实现的多功能 “树插件”。下面通过本文给大家分享jQuery zTree 异步加载添加子节点重复问题,需要的朋友参考下吧
    2017-11-11
  • JQuery学习总结【二】

    JQuery学习总结【二】

    本文主要介绍了JQuery的基本知识,如:JQuery的dom操作,动态创建dom节点,删除节点,document方法等等,文章篇尾处附上实例小练习。需要的朋友可以参考下
    2016-12-12
  • jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)

    jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)

    相对于上一篇,优化了拖拽的效果,具体的代码及截图如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助
    2013-06-06
  • 基于Jquery的仿照flash放大图片效果代码

    基于Jquery的仿照flash放大图片效果代码

    基于Jquery的仿照flash放大图片效果代码,需要的朋友可以参考下。
    2011-03-03
  • JQuery性能优化的几点建议

    JQuery性能优化的几点建议

    针对jquery性能优化这个主题,想必大家都有所了解。下面是我搜集点一点资料关于jquery性能优化,大家可以参考参考。
    2014-05-05
  • jQuery实现伸展与合拢panel的方法

    jQuery实现伸展与合拢panel的方法

    这篇文章主要介绍了jQuery实现伸展与合拢panel的方法,可实现操作div层的平滑收缩与展开的功能,涉及jQuery中next、slideUp、slideDown等方法的使用技巧,非常简单实用,需要的朋友可以参考下
    2015-04-04
  • jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend

    jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend

    在上两篇文章中,我们看到每次要通过 jQuery 的原型增加共享方法的时候,都需要通过 jQuery.fn 一个个进行扩展,非常麻烦.
    2010-08-08
  • 基于jQuery选择器之表单对象属性筛选选择器的实例

    基于jQuery选择器之表单对象属性筛选选择器的实例

    下面小编就为大家带来一篇jQuery选择器之表单对象属性筛选选择器实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • jqPlot jquery的页面图表绘制工具

    jqPlot jquery的页面图表绘制工具

    可能是个人认识能力有限,一直认为仅仅靠html是很难展现稍具动态的图表的,但是在看到jqPlot之后,我的认识有了很大改变,jqplpt——基于HTML的图表展示插件,而且不生成图片,最可贵的是能生成类似flex的数据动态提示以及动态改变数据展示范围等等。
    2009-07-07

最新评论