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


Posted in jQuery onAugust 14, 2017

第一种方式:

$(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中关于bind()方法的使用技巧分享
Mar 30 jQuery
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
jquery 获取索引值在一定范围的列表方法
Jan 25 jQuery
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
jQuery实现的简单手风琴效果示例
Aug 29 jQuery
jQuery实现图片下载代码
Jul 18 jQuery
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
jquery 回调操作实例分析【回调成功与回调失败的情况】
Sep 27 jQuery
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 jQuery
jquery实现淡入淡出轮播图效果
Dec 13 jQuery
jQuery选择器特殊字符与属性空格问题
Aug 14 #jQuery
jQuery实现手势解锁密码特效
Aug 14 #jQuery
jQuery 中msgTips 顶部弹窗效果实现代码
Aug 14 #jQuery
jQuery:unbind方法的使用详解
Aug 14 #jQuery
jQuery 实时保存页面动态添加的数据的示例
Aug 14 #jQuery
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 #jQuery
jquery.uploadView 实现图片预览上传功能
Aug 10 #jQuery
You might like
php面向对象全攻略 (五) 封装性
2009/09/30 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
使用python加密自己的密码
2015/08/04 Python
python 打印对象的所有属性值的方法
2016/09/11 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Jupyter加载文件的实现方法
2020/04/14 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
工伤事故赔偿协议书
2014/04/15 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
Javascript 解构赋值详情
2021/11/17 Javascript