简体   繁体   English

检索单击元素的父级

[英]Retrieve the parent of a clicked element

I've got a < table > - < tr > - < td > structure. 我有一个<table>-<tr>-<td>结构。 Each < td > includes a < div > with three < span > inside. 每个<td>包括一个<div>,内部有三个<span>。 I need a function, which returns the clicked < td > every time I click either < td > or any of its elements (< div >, < span >#1, < span >#2, < span >#3). 我需要一个函数,每次单击<td>或其任何元素(<div>,<span>#1,<span>#2,<span>#3)时,该函数都会返回单击的<td>。

What I tried is setting z-index property to < td > of higher value than one to < div > and < span > elements. 我试过的是将z-index属性设置为<td>值,该值比<div>和<span>元素的值高一。 Thus, I tried to "hide" them behind < td >, but it didn't work. 因此,我试图将它们“隐藏”在<td>后面,但是没有用。

Here's what I've got now: http://jsbin.com/mocajahalu/2/edit?html,css,js,output 这是我现在得到的: http : //jsbin.com/mocajahalu/2/edit?html,css,js,output

Please, help. 请帮忙。

Try this... 尝试这个...

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);

try using parentNode an attribute of the current DOM node: 尝试使用parentNode作为当前DOM节点的属性:

document.addEventListener('click',function (e) {
  alert('You clicked ' +e.target.parentNode);
  e.preventDefault();
},false);

That should do the trick! 这应该够了吧!

To make sure that you have not clicked on the TD element itself you could check: 为了确保您没有单击TD元素本身,可以检查:

TDnode = e.target;
if (TDnode.nodeName!='TD') TDnode = TDnode.parent;

In case your spans could have child elements, you would have to check each parentNode until you have your TD node. 如果您的跨度可能包含子元素,则必须检查每个parentNode,直到拥有TD节点为止。 If you use while(TDNode.nodeName!='TD') you have to make sure to check if parentNode is 'undefined' or not. 如果使用while(TDNode.nodeName!='TD') ,则必须确保检查parentNode是否为'undefined'。

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

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