深入理解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图片延迟加载的实现方法及思路
Jul 22 Javascript
利用js(jquery)操作Cookie的方法说明
Dec 19 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
jQuery仿gmail实现fixed布局的方法
May 27 Javascript
详解JavaScript函数对象
Nov 15 Javascript
jquery遍历函数siblings()用法实例
Dec 24 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
Jun 22 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
Aug 24 Javascript
Angular 2应用的8个主要构造块有哪些
Oct 17 Javascript
jQuery ajax的功能实现方法详解
Jan 06 Javascript
echarts设置图例颜色和地图底色的方法实例
Aug 01 Javascript
koa2实现登录注册功能的示例代码
Dec 03 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
2.PHP入门
2006/10/09 PHP
杏林同学录(一)
2006/10/09 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
php实现计数器方法小结
2015/01/05 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
jquery实现更改表格行顺序示例
2014/04/30 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
python文件和目录操作函数小结
2014/07/11 Python
Python检测QQ在线状态的方法
2015/05/09 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
Python微信操控itchat的方法
2019/05/31 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
Django分组聚合查询实例分享
2020/04/29 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
HTML5样式控制示例代码
2013/11/27 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
测绘工程个人的自我评价
2013/11/10 职场文书
先进个人评语大全
2015/01/04 职场文书
酒店宣传语大全
2015/07/13 职场文书
早安问候语大全
2015/11/10 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python