详解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 相关文章推荐
js 方法实现返回多个数据的代码
Apr 30 Javascript
js实现在文本框光标处添加字符的方法介绍
Nov 24 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
Jan 02 Javascript
jquery实现图片随机排列的方法
May 04 Javascript
基于jQuery实现在线选座之高铁版
Aug 24 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
May 10 Javascript
非常酷炫的Bootstrap图片轮播动画
May 27 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
如何解决日期函数new Date()浏览器兼容性问题
Sep 11 Javascript
uniapp微信小程序实现一个页面多个倒计时
Nov 01 Javascript
详解JavaScript 中的批处理和缓存
Nov 19 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 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
收音机的保养
2021/03/01 无线电
个人站长制做网页常用的php代码
2007/03/03 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
python如何实现代码检查
2019/06/28 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
外语系毕业生找工作的求职信
2013/11/28 职场文书
策划总监岗位职责
2014/02/16 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
数控机床专业自荐信
2014/05/19 职场文书
公司活动总结范文
2014/07/01 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
用Python实现Newton插值法
2021/04/17 Python