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实现二级联动效果
Mar 30 jQuery
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
jQuery实现动态删除LI的方法
May 30 jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
基于jQuery实现的单行公告活动轮播效果
Aug 23 jQuery
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 jQuery
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
jQuery轮播图功能制作方法详解
Dec 03 jQuery
jQuery实现全选、反选和不选功能的方法详解
Dec 04 jQuery
jQuery实现颜色打字机的完整代码
Mar 19 jQuery
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
jQuery实现日历效果
Sep 11 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
PHP个人网站架设连环讲(四)
2006/10/09 PHP
mysql5写入和读出乱码解决
2006/11/25 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
js 金额文本框实现代码
2012/02/14 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
2015/12/08 Javascript
js表单登陆验证示例
2016/10/19 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
采购经理岗位职责
2014/02/16 职场文书
给学校的建议书
2014/03/12 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
JS实现简单的九宫格抽奖
2022/06/28 Javascript