深入理解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下Dhtml的一些区别小结
Dec 02 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
Nov 19 Javascript
javascript判断office版本示例
Apr 11 Javascript
js获取页面description的方法
May 21 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
Jun 01 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
Nov 29 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
Mar 28 Javascript
JS实现n秒后自动跳转的两种方法
Nov 30 Javascript
AngularJS入门教程之数据绑定用法示例
Nov 01 Javascript
详解Node.js:events事件模块
Nov 24 Javascript
移动端图片上传旋转、压缩问题的方法
Oct 16 Javascript
玩转Koa之核心原理分析
Dec 29 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
浅析is_writable的php实现
2013/06/18 PHP
获取URL文件名后缀
2013/10/24 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
分享php多功能图片处理类
2016/05/15 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
9种python web 程序的部署方式小结
2014/06/30 Python
详细探究Python中的字典容器
2015/04/14 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
python多进程并行代码实例
2019/09/30 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
python使用Geany编辑器配置方法
2020/02/21 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
艺术专业大学生自我评价
2013/09/22 职场文书
学员自我鉴定
2014/03/19 职场文书
青年志愿者活动总结
2014/04/26 职场文书
化学专业自荐信
2014/05/28 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
课外活动实习计划
2015/01/19 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
婚宴主持词
2015/06/30 职场文书
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL
python获取带有返回值的多线程
2022/05/02 Python