我有一个函数,需要通过很多parentElement
来获取id。而不是写if( element.parentElement.parentElement.parentElement.id == "target" ){ doThis() }
是否有一种方式在javascript中只是说"如果有一个父元素"这个id" doThis()" ?而不是通过所有这些parentElements有一种方法来说明是否有任何元素是具有此ID的当前元素的父元素,那么doThis()?
编辑
许多人说我应该只是getElementById
,也许这就是解决方案,但是让我向您展示一下我的代码示例,以便您可以更好地了解我正在做的事情:
我有很多具有相同功能的div。我们称之为clicked()。
所以说我有20个看起来像这样的div:<div onclick = "clicked( this )">Content</div>
让我们说这些div包含在其他几个div中:
<div id = "container">
<div id = "top">
<div id = "left">
<div onclick = "clicked( this )">Content</div>
<div onclick = "clicked( this )">Content2</div>
...
</div>
</div>
</div>
我点击的功能如下:
function clicked( element ){
if( element.parentElement.parentElement.parentElement.id == 'container' ){
doThis();
}
}
答案 0 :(得分:2)
您可以编写一个函数来搜索父层次结构:
function parentWithId(elem, id) {
while (elem = elem.parentNode && elem !== document.body) {
if (elem.id === id) {
return elem;
}
}
return null;
}
var p = parentWithId(element, "target");
if (p) {
doThis();
}
或者,您甚至可以将整个事情纳入函数
function parentWithId(elem, id, fn) {
while (elem = elem.parentNode && elem !== document.body) {
if (elem.id === id) {
if (fn) {
fn(elem);
}
return elem;
}
}
return null;
}
parentWithId(element, "target", doThis);