详解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 相关文章推荐
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
Javascript 设计模式(二) 闭包
May 26 Javascript
jquery选择器大全 全面详解jquery选择器
Mar 06 Javascript
常用的JS验证和函数汇总
Dec 23 Javascript
JS中使用变量保存arguments对象的方法
Jun 03 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
Apr 23 Javascript
详解handlebars+require基本使用方法
Dec 21 Javascript
在vue.js中抽出公共代码的方法示例
Jun 08 Javascript
简单实现js进度条加载效果
Mar 25 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
Aug 28 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
Sep 27 Javascript
javascript实现点击按钮切换轮播图功能
Sep 23 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
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
php框架知识点的整理和补充
2021/03/01 PHP
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
Python实现获取网站PR及百度权重
2015/01/21 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
python 自动批量打开网页的示例
2019/02/21 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
python 变量初始化空列表的例子
2019/11/28 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
元旦活动感言
2014/03/08 职场文书
小学生环保倡议书
2014/05/15 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
单位婚育证明范本
2014/11/21 职场文书
申报材料格式
2014/12/30 职场文书
职称评定个人总结
2015/03/05 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
安全主题班会教案
2015/08/12 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书