[英]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.