繁体   English   中英

您可以使用 event.target 定位元素的父元素吗?

[英]Can you target an elements parent element using event.target?

我正在尝试将页面的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>

而我用javascript编写的代码:

function selectedProduct(event){
  target = event.target;
  element = document.getElementById("test");
  element.innerHTML = target.innerHTML;
}

将针对我点击的特定元素。

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

我认为这与选择被点击的元素的父元素有关,但我不确定并且在网上找不到任何东西。

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

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

否则parentNode可能就是你要找的。

链接到当前目标
链接到父节点

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

function selectedProduct(event){
  var target = event.target;
  var parent = target.parentElement;//parent of "target"
}
handleEvent(e) {
  const parent = e.currentTarget.parentNode;
}
function getParent(event)
{
   return event.target.parentNode;
}

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

  1. 如果你想在任何函数内部使用,那么传递你的事件并像这样调用函数: function yourFunction(event){ var parentElement = getParent(event); } function yourFunction(event){ var parentElement = getParent(event); }
$(document).on("click", function(event){
   var a = $(event.target).parents();
   var flaghide = true;
    a.each(function(index, val){
       if(val == $(container)[0]){
           flaghide = false;
        }
    });
    if(flaghide == true){
        //required code
    }
})
var _RemoveBtn = document.getElementsByClassName("remove");
for(var i=0 ;  i<_RemoveBtn.length ; i++){
    _RemoveBtn[i].addEventListener('click',sample,false);
}
function sample(event){
    console.log(event.currentTarget.parentNode);    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM