.parentElement 的替代方案?
Alternative to .parentElement?
我有一个函数需要经过很多 parentElement
s 才能获得一个 id。而不是写 if( element.parentElement.parentElement.parentElement.id == "target" ){ doThis() }
在 javascript 中有没有办法只说 "If there is a parent element with "this 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();
}
}
您可以编写一个函数来搜索父层次结构:
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);
我有一个函数需要经过很多 parentElement
s 才能获得一个 id。而不是写 if( element.parentElement.parentElement.parentElement.id == "target" ){ doThis() }
在 javascript 中有没有办法只说 "If there is a parent element with "this 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();
}
}
您可以编写一个函数来搜索父层次结构:
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);