详解jQuery向动态生成的内容添加事件响应jQuery live()方法


Posted in Javascript onNovember 02, 2015

jQuery live()方法是给所有匹配的元素附加一个事件处理函数,即使这个元素是以后通过append,prepend,after等事件生成后的内容也依然有效。
这个方法可以看做是 .bind() 方法的一个变体。使用 .bind() 时,选择器匹配的元素会附加一个事件处理函数,而以后再添加的元素则不会有。为此需要再使用一次 .bind() 才行。比如说:

<body> 
<div class="clickme">Click here</div> 
</body>

可以给这个元素绑定一个简单的click事件:

$('.clickme').bind('click', function() { alert(3water.com); });

 当点击了元素,就会弹出一个警告框。然后,想象一下这之后有另一个元素添加进来了。
$('body').append('<div class="clickme">Another target</div>');

尽管这个新的元素也能够匹配选择器 ".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。
但live() 就提供了对应这种情况的方法。如果我们是这样绑定click事件的:
$('.clickme').live('click', function() { alert("3water.com"); });

这样点击新增的元素,它依然能够触发事件处理函数。
事件委托
live() 方法能对一个还没有添加进DOM的元素有效,是由于使用了事件委托:绑定在祖先元素上的事件处理函数可以对在后代上触发的事件作出回应。传递给 live() 的事件处理函数不会绑定在元素上,而是把他作为一个特殊的事件处理函数,绑定在 DOM 树的根节点上。
在我们的例子中,当点击新的元素后,会依次发生下列步骤:
1、生成一个click事件传递给 <div> 来处理。
2、由于没有事件处理函数直接绑定在 <div> 上,所以事件冒泡到DOM树上。
3、事件不断冒泡一直到DOM树的根节点,默认情况下上面绑定了这个特殊的事件处理函数。
4、执行由 .live() 绑定的特殊的 click 事件处理函数。
5、这个事件处理函数首先检测事件对象的 target 来确定是不是需要继续。
6、这个测试是通过检测 $(event.target).closest('.clickme') 能否找到匹配的元素来实现的。
7、如果找到了匹配的元素,那么调用原始的事件处理函数。
8、由于只有在事件发生时才会在上面的第五步里做测试,因此在任何时候添加的元素都能够响应这个事件。
以上就是对jQuery向动态生成的内容添加事件响应jQuery live()方法的详细介绍,希望对大家的学习有所帮助。
Javascript 相关文章推荐
不错的一个日期输入 动态
Nov 06 Javascript
jQuery中mouseover事件用法实例
Dec 26 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
Jan 26 Javascript
jQuery实现简洁的轮播图效果实例
Sep 07 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
Jan 05 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
May 26 Javascript
react native 原生模块桥接的简单说明小结
Feb 26 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
Oct 28 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 10 Javascript
javascript 易错知识点实例小结
Apr 25 Javascript
使用JS前端技术实现静态图片局部流动效果
Aug 05 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 #Javascript
JS实现超简单的鼠标拖动效果
Nov 02 #Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 #Javascript
JS实现在状态栏显示打字效果完整实例
Nov 02 #Javascript
12个超实用的JQuery代码片段
Nov 02 #Javascript
JavaScript Length 属性的总结
Nov 02 #Javascript
基于Jquery实现万圣节快乐特效
Nov 01 #Javascript
You might like
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
很可爱的输入框
2008/08/03 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
js格式化时间的方法
2015/12/18 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
Keras设置以及获取权重的实现
2020/06/19 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
Python中Selenium模块的使用详解
2020/10/09 Python
幼儿园长自我鉴定
2013/10/17 职场文书
物业保安岗位职责
2014/07/02 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
先进个人评语大全
2015/01/04 职场文书
十岁生日答谢词
2015/01/05 职场文书
医学生自荐信范文
2015/03/05 职场文书
2015大学生求职信范文
2015/03/20 职场文书
我的长征观后感
2015/06/09 职场文书
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL