这应该很简单,但我遇到了麻烦。我如何得到一个子元素的父div ?
我的HTML:
<div id="test">
<p id="myParagraph">Testing</p>
</div>
我的JavaScript:
var pDoc = document.getElementById("myParagraph");
var parentDiv = ??????????
我认为是文件。父母或父母。容器将工作,但我一直得到未定义的错误。注意,pDoc是定义的,而不是它的某些变量。
什么好主意吗?
注:如果可能的话,我倾向于避免使用jQuery。
如果你正在寻找比直接父元素更远的特定类型的元素,你可以使用一个函数向上查找DOM,直到它找到一个,或者没有:
// Find first ancestor of el with tagName
// or undefined if not found
function upTo(el, tagName) {
tagName = tagName.toLowerCase();
while (el && el.parentNode) {
el = el.parentNode;
if (el.tagName && el.tagName.toLowerCase() == tagName) {
return el;
}
}
// Many DOM methods return null if they don't
// find the element they are searching for
// It would be OK to omit the following and just
// return undefined
return null;
}
编辑2021
元素。最接近是DOM标准的一部分。它接受一个选择器作为参数,并返回第一个匹配的祖先,如果没有则返回null。
如果你正在寻找比直接父元素更远的特定类型的元素,你可以使用一个函数向上查找DOM,直到它找到一个,或者没有:
// Find first ancestor of el with tagName
// or undefined if not found
function upTo(el, tagName) {
tagName = tagName.toLowerCase();
while (el && el.parentNode) {
el = el.parentNode;
if (el.tagName && el.tagName.toLowerCase() == tagName) {
return el;
}
}
// Many DOM methods return null if they don't
// find the element they are searching for
// It would be OK to omit the following and just
// return undefined
return null;
}
编辑2021
元素。最接近是DOM标准的一部分。它接受一个选择器作为参数,并返回第一个匹配的祖先,如果没有则返回null。