javascript – addEventListener用于新元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – addEventListener用于新元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1463字,纯文字阅读大概需要3分钟。
内容图文
![javascript – addEventListener用于新元素](/upload/InfoBanner/zyjiaocheng/816/dcc0ec04a27845e18cc37b22dd3a7ec8.jpg)
考虑一个基本的addEventListener作为
window.onload=function(){
document.getElementById("alert")
.addEventListener('click', function(){
alert("OK");
}, false);
}
其中< div id =“alert”> ALERT< / div>在原始文档中不存在,我们通过AJAX从外部源代码调用它.我们如何强制addEventListener为文档中新添加的元素工作(在window.onload初始扫描DOM元素之后)?
在jQuery中,我们通过live()或delegate()来完成此操作;但是我们如何在纯Javascript中使用addEventListener来做到这一点?事实上,我正在寻找与delegate()相当的东西,因为live()将事件附加到根文档;我希望在家长一级听取新鲜事.
解决方法:
过度简化,与jQuery的事件系统相距甚远,但基本的想法就在那里.
var div = document.createElement("div"),
prefix = ["moz","webkit","ms","o"].filter(function(prefix){
return prefix+"MatchesSelector" in div;
})[0] + "MatchesSelector";
Element.prototype.addDelegateListener = function( type, selector, fn ) {
this.addEventListener( type, function(e){
var target = e.target;
while( target && target !== this && !target[prefix](selector) ) {
target = target.parentNode;
}
if( target && target !== this ) {
return fn.call( target, e );
}
}, false );
};
你错过了这个:
>性能优化,每个委托侦听器都将运行一个完整的循环,所以如果你在一个元素上添加很多,你将运行所有这些循环
>可写事件对象.因此,您无法修复非常重要的e.currentTarget,因为它通常用作对某个实例的引用
>没有数据存储实现,因此除非您每次都手动创建函数,否则没有好的方法可以删除处理程序
>只支持冒泡事件,所以没有“改变”或“提交”等你认为jQuery理所当然
>其他许多我现在都忘了
内容总结
以上是互联网集市为您收集整理的javascript – addEventListener用于新元素全部内容,希望文章能够帮你解决javascript – addEventListener用于新元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。