摘要:本篇教程介绍了jQuery教程 如何为动态添加的节点添加事件,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入。
本篇教程介绍了jQuery教程 如何为动态添加的节点添加事件,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入。
<
jQuery live() 方法是给所有匹配的元素附加一个事件处理函数,即使这个元素是以后通过append,prepend,after等事件生成后的内容也依然有效。
这个方法可以看做是 .bind() 方法的一个变体。使用 .bind() 时,选择器匹配的元素会附加一个事件处理函数,而以后再添加的元素则不会有。为此需要再使用一次 .bind() 才行。比如说:
<body>
<div class="clickme">Click here</div>
</body>
可以给这个元素绑定一个简单的click事件:
$(‘.clickme‘).bind(‘click‘, function() { alert("www.phpernote.com"); });
当点击了元素,就会弹出一个警告框。然后,想象一下这之后有另一个元素添加进来了。
$(‘body‘).append(‘<div class="clickme">Another target</div>‘);
尽管这个新的元素也能够匹配选择器 ".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。
但 live() 就提供了对应这种情况的方法。如果我们是这样绑定click事件的:
$(‘.clickme‘).live(‘click‘, function() { alert("www.phpernote.com"); });
这样点击新增的元素,他依然能够触发事件处理函数。
事件委托
live() 方法能对一个还没有添加进DOM的元素有效,是由于使用了事件委托:绑定在祖先元素上的事件处理函数可以对在后代上触发的事件作出回应。传递给 live() 的事件处理函数不会绑定在元素上,而是把他作为一个特殊的事件处理函数,绑定在 DOM 树的根节点上。
在我们的例子中,当点击新的元素后,会依次发生下列步骤:
生成一个click事件传递给 <div> 来处理。
由于没有事件处理函数直接绑定在 <div> 上,所以事件冒泡到DOM树上。
事件不断冒泡一直到DOM树的根节点,默认情况下上面绑定了这个特殊的事件处理函数。
执行由 .live() 绑定的特殊的 click 事件处理函数。
这个事件处理函数首先检测事件对象的 target 来确定是不是需要继续。
这个测试是通过检测 $(event.target).closest(‘.clickme‘) 能否找到匹配的元素来实现的。
如果找到了匹配的元素,那么调用原始的事件处理函数。
由于只有在事件发生时才会在上面的第五步里做测试,因此在任何时候添加的元素都能够响应这个事件。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端jQuery频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号