深入理解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 相关文章推荐
IE与firefox之jquery用法区别
Oct 03 Javascript
js确认删除对话框效果的示例代码
Feb 20 Javascript
js中把JSON字符串转换成JSON对象最好的方法
Mar 21 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
Feb 09 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
Sep 11 Javascript
AngularJS 仿微信图片手势缩放的实例
Sep 28 Javascript
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
详解plotly.js 绘图库入门使用教程
Feb 23 Javascript
node.js域名解析实现方法详解
Nov 05 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
javascript 代码是如何被压缩的示例代码
May 06 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 n个不重复的随机数生成代码
2009/06/23 PHP
处理单名多值表单的详解
2013/06/08 PHP
浅析php header 跳转
2013/06/17 PHP
关于svn冲突的解决方法
2013/06/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
Javascript 二维数组
2009/11/26 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
js面向对象编程总结
2017/02/16 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
重写django的model下的objects模型管理器方式
2020/05/15 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
锐步英国官网:Reebok英国
2019/11/29 全球购物
机电一体化毕业生求职信
2013/11/02 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
人民教师求职自荐信
2014/03/12 职场文书
农行心得体会
2014/09/02 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
会计实训报告范文
2014/11/04 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书