为什么在记录

时间:2017-03-15 02:42:49

标签: javascript html events

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'可用',它让我的生活更轻松,但我只是想知道为什么控制台骗我

1 个答案:

答案 0 :(得分:0)

问题是标签动态生成,因此您必须提升范围,并将事件侦听器附加到非动态生成的元素

以下是jQuery的示例,将侦听器附加到document

&#13;
&#13;
$(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;
&#13;
&#13;

因为document始终可用,所以它始终会附加侦听器。然后它只是等待&#39;在应用点击事件之前,要创建动态元素。

我还创造了一个演示这个here的小提琴。

希望这有帮助! :)