详解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 相关文章推荐
网页自动刷新,不产生嗒嗒声的一个解决方法
Mar 27 Javascript
javascript 处理HTML元素必须避免使用的一种方法
Jul 30 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
Apr 26 Javascript
js实现网页自动刷新可制作节日倒计时效果
May 27 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
Jul 10 Javascript
js实现表单检测及表单提示的方法
Aug 14 Javascript
jquery判断复选框选中状态以及区分attr和prop
Dec 18 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
Sep 28 Javascript
深入浅析Vue不同场景下组件间的数据交流
Aug 15 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
Aug 16 Javascript
p5.js临摹动态图形实现方法详解
Oct 23 Javascript
JavaScript实现刮刮乐效果
Nov 01 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中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
jquery动态添加删除div 具体实现
2013/07/20 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
使用python实现简单五子棋游戏
2019/06/18 Python
python生成requirements.txt的两种方法
2019/09/18 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
播音主持女孩的自我评价分享
2013/11/20 职场文书
便利店的创业计划书
2014/01/15 职场文书
公证委托书大全
2014/04/04 职场文书
投标授权委托书范文
2014/08/02 职场文书
村创先争优活动总结
2014/08/28 职场文书
博物馆观后感
2015/06/05 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
学生会干部任命书
2015/09/21 职场文书
2016国培研修心得体会
2016/01/08 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技