深入理解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 相关文章推荐
JavaScript replace(rgExp,fn)正则替换的用法
Mar 04 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
Apr 11 Javascript
jquery 3D球状导航的文章分类
Jul 06 Javascript
Array.prototype.concat不是通用方法反驳[译]
Sep 20 Javascript
jQuery阻止同类型事件小结
Apr 19 Javascript
js兼容的placeholder属性详解
Aug 18 Javascript
javascript学习笔记(二)数组和对象部分
Sep 30 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
Oct 26 Javascript
js判断上传文件后缀名是否合法
Jan 28 Javascript
jQuery插件支持同一页面被多次调用
Feb 14 Javascript
整理一下常见的IE错误
Nov 18 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 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的Yii框架的基本使用示例
2015/08/21 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
2016/01/08 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
javascript 自定义回调函数示例代码
2014/09/26 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
python 实现上传图片并预览的3种方法(推荐)
2017/07/14 Python
python中模块的__all__属性详解
2017/10/26 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
白色公司:The White Company
2017/10/11 全球购物
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
大学生毕业自荐信
2013/10/10 职场文书
初中英语教学反思
2014/01/25 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
交通事故委托书范本
2014/09/28 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技