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实现图片放大点击切换
Jun 06 jQuery
jQuery实现手势解锁密码特效
Aug 14 jQuery
使用jQuery实现购物车结算功能
Aug 15 jQuery
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
jQuery事件对象的属性和方法详解
Sep 09 jQuery
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
jquery实现企业定位式导航效果
Jan 01 jQuery
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
jQuery中实现text()的方法
Apr 04 jQuery
jQuery实现B2B网站后台管理系统侧导航
Jul 08 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
SONY ICF-F10中波修复记
2021/03/02 无线电
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
JavaScript实现简单音乐播放器
2020/04/17 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
python映射列表实例分析
2015/01/26 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
有关打架的检讨书
2014/01/25 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
幼儿教师辞职信
2015/02/27 职场文书
公司联欢会主持词
2015/07/04 职场文书
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL