你能使用event.target定位元素父元素吗?

Ada*_*dam 68 html javascript

我试图改变我的页面的innerHTML成为我点击的元素的innerHTML,唯一的问题是我希望它采取整个元素,如:

<section class="homeItem" data-detail="{"ID":"8","Name":"MacBook Air","Description":"2015 MacBook A…"20","Price":"899","Photo":"Images/Products/macbookAir.png"}"></section>
Run Code Online (Sandbox Code Playgroud)

而我用javascript编写的代码:

function selectedProduct(event){
  target = event.target;
  element = document.getElementById("test");
  element.innerHTML = target.innerHTML;
}
Run Code Online (Sandbox Code Playgroud)

将定位我点击的特定元素.

我想要实现的是当我点击<section>元素中的任何位置时,它将采用整个元素的innerHTML而不是我点击的特定元素.

我认为这与选择被点击的那个的父元素有关,但我不确定,也无法在网上找到任何东西.

如果可能的话,我想远离JQuery

don*_*als 111

我认为你需要的是使用event.currentTarget.这将包含实际具有事件侦听器的元素.因此,如果整个事件<section>具有eventlistener event.target将是被点击的元素,那么<section>将是event.currentTarget.

否则parentNode可能是你正在寻找的.

链接到parentNode的currentTarget
链接

  • 救了我一天!, event.target 是鼠标上最小的标签, event.currentTarget 是触发事件的标签 (4认同)
  • 正是我想要的,谢谢!计时器到时,我会接受答案。 (2认同)

KJ *_*ice 38

要使用元素的父级,请使用parentElement:

function selectedProduct(event){
  var target = event.target;
  var parent = target.parentElement;//parent of "target"
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然这回答了OP的问题,但我认为OP的问题应该用`currentTarget`来解决. (2认同)

Dav*_*vid 13

handleEvent(e) {
  const parent = e.currentTarget.parentNode;
}
Run Code Online (Sandbox Code Playgroud)


Abd*_*lim 8

function getParent(event)
{
   return event.target.parentNode;
}
Run Code Online (Sandbox Code Playgroud)

示例: 1.document.body.addEventListener("click", getParent, false);返回您单击的当前元素的父元素.

  1. 如果你想在任何函数里面使用,那么传递你的事件并调用这样的函数: function yourFunction(event){ var parentElement = getParent(event); }