检索单击元素的父级

时间:2015-03-28 19:05:27

标签: javascript html css

我有一个<表> - < tr> - < td>结构体。每个< td>包括< div>三个< span>内。 我需要一个函数,它返回被点击的< td>每次我点击< td>或其任何元素(< div>,< span>#1,< span>#2,< span>#3)。

我尝试将z-index属性设置为< td>价值高于1的< div>和< span>元素。因此,我试图隐藏"他们落后< td&gt ;,但它没有用。

这是我现在所拥有的: http://jsbin.com/mocajahalu/2/edit?html,css,js,output

请帮助。

2 个答案:

答案 0 :(得分:2)

试试这个......

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

答案 1 :(得分:0)

尝试使用parentNode当前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是否为“未定义”。