是否可以向所有动态生成的元素添加事件侦听器(Javascript)?
我不是页面的所有者,因此我无法以静态方式添加侦听器。
对于页面加载时创建的所有元素,我使用:
doc.body.addEventListener('click', function(e){
//my code
},true);
当页面上出现新元素时,我需要一个方法来调用此代码,但我无法使用 jQuery(delegate、on 等无法在我的项目中工作)。我怎样才能做到这一点?
听起来您需要追求委托策略,而不需要退回到图书馆。我在此处的 Fiddle 中发布了一些示例代码:http://jsfiddle.net/founddrama/ggMUn/ http://jsfiddle.net/founddrama/ggMUn/
它的要点是使用target
on the event
object 来查找您感兴趣的元素,并做出相应的响应。就像是:
document.querySelector('body').addEventListener('click', function(event) {
if (event.target.tagName.toLowerCase() === 'li') {
// do your action on your 'li' or whatever it is you're listening for
}
});
CAVEATS!示例 Fiddle 仅包含符合标准的浏览器的代码(即 IE9+,以及几乎所有其他浏览器的每个版本)如果您需要支持“旧 IE”attachEvent
,那么您还需要围绕正确的本机函数提供您自己的自定义包装器。 (关于这个问题有很多很好的讨论;我喜欢 Nicholas Zakas 在他的书中提供的解决方案面向 Web 开发人员的专业 JavaScript.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)