Javascript得到“clicked”元素addEventListener

时间:2015-06-11 16:17:14

标签: javascript

我知道我可以抓住个人身份证的元素。

无论如何,我可以将一个监听器附加到父div并传递所单击的单个跨区的ID?

access-denied-handler

JS

<div id = "divId">
  <span id="one"></span>
  <span id="two"> </span>
 </div>

2 个答案:

答案 0 :(得分:3)

您可以使用event对象并访问其target属性

&#13;
&#13;
document.getElementById("divId").addEventListener("click", someFunction);

function someFunction(event) {
  console.log(event.target.id);
}
&#13;
<div id="divId">
  <span id="one">one</span>
  <span id="two"> two</span>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如果用户单击的元素是该元素的子节点,则用户要测试的e.target将是另一个节点。如今,检查此内容的明智方法是在文档级别进行侦听并迭代路径(或使用一些委托库,其中有很多委托库):

在文档中添加一个事件侦听器:

const isOnId = (path,id) => path.some(element => element.id === id);

document.addEventListener('click',function(e) {
  if(isOnId(e.path,'two')) {
    //you clicked on or in element with an id two
  } else {
    //you clicked on something else
  }
});