Javascript 检索已单击元素的父级

Javascript 检索已单击元素的父级,javascript,html,css,Javascript,Html,Css,我有一个--结构。每个包括一个,内部有三个。 我需要一个函数,每次单击或其任何元素(、#1、#2、#3)时,该函数都会返回单击的 我尝试的是将z-index属性设置为,其值高于和元素的值。因此,我试图将它们“隐藏”在后面,但没有成功 这是我现在得到的: 请提供帮助。尝试使用当前DOM节点的属性: document.addEventListener('click',function (e) { alert('You clicked ' +e.target.parentNode); e.p

我有一个--
结构。每个包括一个
,内部有三个。 我需要一个函数,每次单击
或其任何元素(
#1、#2、#3)时,该函数都会返回单击的

我尝试的是将z-index属性设置为
,其值高于
元素的值。因此,我试图将它们“隐藏”在
后面,但没有成功

这是我现在得到的:


请提供帮助。

尝试使用当前DOM节点的属性:

document.addEventListener('click',function (e) {
  alert('You clicked ' +e.target.parentNode);
  e.preventDefault();
},false);
那就应该成功了

要确保没有单击TD元素本身,可以检查:

TDnode = e.target;
if (TDnode.nodeName!='TD') TDnode = TDnode.parent;
如果跨度可能有子元素,则必须检查每个parentNode,直到找到TD节点为止。如果使用while(TDNode.nodeName!='TD')则必须确保检查parentNode是否为“未定义的”。

请尝试以下操作

document.addEventListener('click',function (e) {
   var parentEl = null;

   if (e.target.tagName === "TD") {
     // When user clicks on TD
     parentEl = e.target;
   } else if (e.target.parentElement.tagName === "TD") {
     // When user clicks on any of its child element (The DIVs and SPANs)
     // If user clicks on any child elements
     parentEl = e.target.parentElement;
   }

   // parentEl is the TD element
   alert(parentEl);
   e.preventDefault();
}, false);

它和
$(this)一样简单。最近('td')
,或者在你的例子中是
$(e.target)。最近('td')
,因为你的目标是文档对的,但是我只能使用本机Javascript。然后你必须在本机javascriptParent节点中重新创建
最近的
,因为td是你很可能想要捕捉到的,因为建议的parentNode用于子跨度元素。因此,您可以检查e.target是否为TD,并且只有在不使用parentNode.great的情况下,才可以检查。正如我在回答时所说的,您可以检查您同时得出的nodeName(或tagName):-但是在这里,如果SPAN元素有子元素,您必须在循环中检查parentNode