深入理解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 相关文章推荐
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
jquery下jstree简单应用 - v1.0
Apr 14 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
Javascript字符串浏览器兼容问题分析
Dec 01 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
Jun 30 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
Dec 02 Javascript
详解jQuery选择器
Dec 21 Javascript
Vue中添加过渡效果的方法
Mar 16 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 Javascript
微信小程序位置授权处理方法
Jun 13 Javascript
解决layer图标icon不加载的问题
Sep 04 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实现建立多层级目录的方法
2014/07/19 PHP
php制作简单模版引擎
2016/04/07 PHP
PHP对象实例化单例方法
2017/01/19 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
python把转列表为集合的方法
2019/06/28 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
python 实现return返回多个值
2019/11/19 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
python软件都是免费的吗
2020/06/18 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
高职助产应届生自荐信
2013/09/24 职场文书
九年级英语教学反思
2014/01/31 职场文书
团日活动总结范文
2014/04/25 职场文书
委托函范文
2015/01/29 职场文书
工作会议通知
2015/04/15 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python