2011-07-28 96 views
142

这应该很简单,但我遇到了问题。我如何获得子元素的父级div?获取元素的父元素

HTML

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

的JavaScript

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

我还以为document.parentparent.container的工作,但我不断收到not defined错误。请注意,pDoc是定义的,只是没有它的某些变量。

任何想法?

P.S.如果可能,我宁愿避免使用jQuery。

回答

8

酒店pDoc.parentElementpDoc.parentNode将让你的父元素。

26

如果你正在寻找一个特定类型的元素,将其进一步比直接父的时候,你可以使用上升的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; 
} 
+0

我觉得你必须分配'e1'为't',并把EXPR。 'while.'循环条件中't.parentNode',但不是't'。因为t只是一个价值而不是表达。不是吗? –

+1

你是对的...... – RobG

+0

与jQuery:el。最接近的(tagName) – Ullullu

2

这可能会帮助你。

ParentID = pDoc.offsetParent; 
alert(ParentID.id); 
0

当您试图将它们排列在元素的“实际流动”中时,了解元素的父元素很有用。

下面给出的代码将输出其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 -->