深入理解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保留小数点后几位的写法
Jan 03 Javascript
限制只能输入数字的实现代码
May 16 Javascript
jQuery学习心得总结(必看篇)
Jun 10 Javascript
jQuery插件简单学习实例教程
Jul 01 Javascript
详解js中Json的语法与格式
Nov 22 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
AngularJs 禁止模板缓存的方法
Nov 28 Javascript
javascript+css3开发打气球小游戏完整代码
Nov 28 Javascript
jQuery实现模糊搜索功能的方法分析
Jun 29 jQuery
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
Nov 14 Javascript
JavaScript中break、continue和return的用法区别实例分析
Mar 02 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
Apr 01 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获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
numpy.array 操作使用简单总结
2019/11/08 Python
浅谈django channels 路由误导
2020/05/28 Python
Python中Selenium库使用教程详解
2020/07/23 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
公司员工的自我评价范例
2013/11/01 职场文书
学校消防演习方案
2014/02/19 职场文书
市场营销调查计划书
2014/05/02 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
走群众路线学习笔记
2014/11/06 职场文书
保外就医申请书范文
2015/08/06 职场文书