我有一个<表> - < 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
请帮助。
答案 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是否为“未定义”。