深入理解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 相关文章推荐
火狐浏览器(firefox)下获得Event对象以及keyCode
Nov 13 Javascript
javascript jq 弹出层实例
Aug 25 Javascript
js鼠标悬浮出现遮罩层的方法
Jan 28 Javascript
javascript中定义类的方法详解
Feb 10 Javascript
JS操作HTML自定义属性的方法
Feb 10 Javascript
使用Chart.js图表库制作漂亮的响应式表单
Oct 28 Javascript
vue短信验证性能优化如何写入localstorage中
Apr 25 Javascript
详解如何webpack使用DllPlugin
Sep 30 Javascript
TypeScript类型声明书写详解
Aug 28 Javascript
解决在layer.open中使用时间控件laydate失败的问题
Sep 11 Javascript
微信小程序用户盒子、宫格列表的实现
Jul 01 Javascript
react antd实现动态增减表单
Jun 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
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
js实现简单进度条效果
2020/03/25 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
Python decimal模块使用方法详解
2020/06/08 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
见习期自我鉴定
2013/11/07 职场文书
大学生如何写自荐信
2014/01/08 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
管理建议书范文
2014/05/13 职场文书
团干部培训方案
2014/06/03 职场文书
节约能源标语
2014/06/17 职场文书
年终工作总结范文2014
2014/11/27 职场文书
教代会闭幕词
2015/01/28 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS