2016-01-01 25 views
1

我通过ajax(纯JavaScript)内“测试”动态加载div的内容。现在,当我点击索引6的子div时,我想要一个警告框出现,但事实并非如此。addEventListener不工作的Ajax生成的内容(纯JavaScript)

如何使点击事件起作用?如果Ajax请求已完成,则调用Get。它工作正常如果我删除eventlistener,只是添加一个alertbox,显示适当的内容。使用eventlistener它完全无法将处理程序绑定到目标div上。

function gets(){ 
    document.getElementById("test").children[6].addEventListener("click", function() { 
     alert(document.getElementById("test").children[6]) 
    }) 
} 
+0

你在'alert'和'})'末尾缺少一个分号。 – Cyval

+1

@Cyval代码是有效的....好吧我没有缓存我的元素,但很好哦 – Asperger

+2

这看起来像一个代表团的问题,请按照[链接](http://codepen.io/32bitkid/post/understanding-delegated- JavaScript的事件)。 –

回答

0

问题可以固定事件委托

是如何工作的一个例子:

function gets() { 
    document.getElementById("test").addEventListener("click", function(event) { 
    console.log(event.currentTarget.children[0]) 

    }) 

currentTarget当前是指我们正在积极点击元素和目标是父。

+0

如果他在AJAX返回后添加事件侦听器,则不需要使用委派。 – Barmar

+0

即使在ajax后它不起作用 – Asperger

+0

这就是我不明白 - 为什么它不工作?如果您试图为尚不存在的元素绑定处理程序,则只需要委派。 – Barmar