深入理解jQuery事件绑定


Posted in Javascript onJune 02, 2016

html:

<a href="#" onclick="addBtn()">addBtn</a>

<div id="mDiv">

  <button class="cBtn" onclick="alert(11111)">button1</button>

  <button class="cBtn">button2</button>

  <button class="cBtn">button3</button>

</div>

javascript:

<script type="text/javascript">
 function addBtn(){
      $('#mDiv').append(' <button class="cBtn">button5</button>')
 }
jQuery(function($){
//使用on代替live和delegate(live由于性能原因已经被废弃,被delegate代替),新添加到mDiv的button依然会有绑定的事件
$('#mDiv').on('click','.cBtn',function(index, eleDom){
alert($(this).html())
 });
//使用on代替bind
$('.cBtn').on('click',function(){
alert($(this).html())
 })
//注意:
/*
1、无论使用bind、on、delegate、click(function())都是重复绑定,即绑定的同类型事件被放到一个事件队列中,依次执行,后绑定的事件不会替换之前绑定的,对于on使用off,delegate用undelegate,bind及click使用unbind来解除绑定,例如unbind(type)传递为事件类型,如果不传type则解出所有事件绑定;需要注意的是元素本身自带的事件无法unbind(如button1)
2、要绑定自定义事件,如'open',以上函数都可以使用,但激活需要使用trigger

总结:
建议使用on函数,绑定形式为$('.myClass').on({
click:function(eleDom){
...do someting...
},
dbclick:function(eleDom){
...do someting...
}
....
})
*/
}
</script>

一些说明:

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()是直接绑定在元素上

.live()则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。

.delegate()则是更精确的小范围使用事件代理,性能优于.live()

.on()则是最新的1.9版本整合了之前的三种方式的新事件绑定机制

以上这篇深入理解jQuery事件绑定就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS的反射问题
Apr 07 Javascript
详解js闭包
Sep 02 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
Feb 24 Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
May 09 Javascript
js实现文字向上轮播功能
Jan 13 Javascript
Vuejs实现带样式的单文件组件新方法
May 02 Javascript
vue实现全选、反选功能
Nov 17 Javascript
理解 javascript 中的函数表达式与函数声明
Jul 07 Javascript
除Console.log()外更多的Javascript调试命令
Jan 24 Javascript
快速解决vue在ios端下点击响应延时的问题
Aug 27 Javascript
vue 通过绑定事件获取当前行的id操作
Jul 27 Javascript
jQuery获取单击节点对象的方法
Jun 02 #Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 #Javascript
JavaScript核心语法总结(推荐)
Jun 02 #Javascript
javascript基础语法——全面理解变量和标识符
Jun 02 #Javascript
Bootstrap开发实战之第一次接触Bootstrap
Jun 02 #Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
Jun 02 #Javascript
深入理解Ajax的get和post请求
Jun 02 #Javascript
You might like
PHP 模板高级篇总结
2006/12/21 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
jQuery live
2009/05/15 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
常见的在Python中实现单例模式的三种方法
2015/04/08 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Python pymsql模块的使用
2020/09/07 Python
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
EJB实例的生命周期
2016/10/28 面试题
简历里的自我评价范文
2014/02/24 职场文书
入伍通知书
2015/04/23 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
民事调解书范文
2015/05/20 职场文书
军训结束新闻稿
2015/07/17 职场文书
创业计划书之网吧
2019/10/10 职场文书