获取元素的父div


208

这应该真的很简单,但是我遇到了麻烦。如何获得子元素的父div?

我的HTML:

<div id="test">
    <p id="myParagraph">Testing</p>
</div>

我的JavaScript:

var pDoc = document.getElementById("myParagraph");
var parentDiv = ??????????   

我本来以为document.parent还是parent.container会工作,但我不断收到not defined错误。请注意,pDoc已定义,但不是其中的某些变量。

有任何想法吗?

附言:如果可能的话,我宁愿避免使用jQuery。

Answers:



33

如果您正在寻找比直接父元素更远的特定元素类型,则可以使用一个在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;
}

jQuery:el.closest(tagName)
Ullullu 2015年

3
@Ullullu-让我们看看10,000行的库还是10行的函数?;-)
RobG'5




-1

当您尝试将元素的父元素放置在元素的“实际流”之外时,了解元素的父元素很有用。

下面给出的代码将输出提供其ID的元素的父代的ID。可用于错位诊断。

<!-- Patch of code to find parent -->
<p id="demo">Click the button </p>
<button onclick="parentFinder()">Find Parent</button>
<script>
function parentFinder()
{
    var x=document.getElementById("demo"); 
    var y=document.getElementById("*id of Element you want to know parent of*");
    x.innerHTML=y.parentNode.id;
}
</script>
<!-- Patch ends -->
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.