详解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 相关文章推荐
教您去掉ie网页加载进度条的方法
Dec 09 Javascript
jQuery调用WebService的实现代码
Jun 19 Javascript
javascript实现可改变滚动方向的无缝滚动实例
Jun 17 Javascript
Javascript事件实例详解
Nov 06 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
Apr 17 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
Jul 18 Javascript
AngularJs bootstrap搭载前台框架——准备工作
Sep 01 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
Sep 08 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
vue自定义一个v-model的实现代码
Jun 21 Javascript
详解一个基于react+webpack的多页面应用配置
Jan 21 Javascript
JavaScript流程控制(分支)
Dec 06 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
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
ie 调试javascript的工具
2009/04/29 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
jquery实现拖动效果
2016/08/10 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
电脑教师的自我评价
2013/12/18 职场文书
银行职员思想汇报
2013/12/31 职场文书
快递业务员岗位职责
2014/01/06 职场文书
自荐书范文范例
2014/02/13 职场文书
学雷锋演讲稿
2014/03/04 职场文书
纠风工作实施方案
2014/03/15 职场文书
党员创先争优心得体会
2014/09/11 职场文书
遗失说明具结保证书
2015/02/26 职场文书
小学德育工作总结2015
2015/05/12 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
如何书写授权委托书?
2019/06/25 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis