function hide (e){
console.log(e);//but in the Console click on triangle the currentTarget is null,why?
console.log(e.currentTarget) //is an object.
}
var ps = document.getElementsByTagName('p');
for(var i = 0; i < ps.length; i++){
ps[i].addEventListener('click', hide, false);
}
我认为currentTarget在html中不是“可用”2年(我曾经是as3开发人员)。现在我试图找出它为什么不“可用”,但是当我找到这个参考{{3 e.currentTarget显示了一个对象,让我感到困惑。现在我的currentTarget'可用',它让我的生活更轻松,但我只是想知道为什么控制台骗我
答案 0 :(得分:0)
问题是标签动态生成,因此您必须提升范围,并将事件侦听器附加到非动态生成的元素。
以下是jQuery的示例,将侦听器附加到document
:
$(document).on("click", "p", function(e) {
console.log(e.currentTarget);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
One
</p>
<p>
Two
</p>
<p>
Three
</p>
&#13;
因为document
始终可用,所以它始终会附加侦听器。然后它只是等待&#39;在应用点击事件之前,要创建动态元素。
我还创造了一个演示这个here的小提琴。
希望这有帮助! :)