深入理解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 相关文章推荐
jQuery 表格工具集
Apr 25 Javascript
jQuery源码分析之jQuery中的循环技巧详解
Sep 06 Javascript
JQuery中$.each 和$(selector).each()的区别详解
Mar 13 Javascript
JavaScript中判断两个字符串是否相等的方法
Jul 07 Javascript
设置jQueryUI DatePicker默认语言为中文
Jun 04 Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 Javascript
Bootstrap CSS组件之输入框组
Dec 17 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
Dec 23 Javascript
JavaScript实现精美个性导航栏筋斗云效果
Oct 29 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 Javascript
vue-router的两种模式的区别
May 30 Javascript
BootstrapValidator验证用户名已存在(ajax)
Nov 08 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实现简单洗牌算法
2013/06/18 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
JS编程小常识很有用
2012/11/26 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
Python中使用HTMLParser解析html实例
2015/02/08 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
使用npy转image图像并保存的实例
2020/07/01 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
社区党员先进事迹
2014/01/22 职场文书
运动会跳远广播稿
2014/02/04 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
创新型城市实施方案
2014/03/06 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
工厂无线对讲系统解决方案
2022/02/18 无线电