2011-07-28 192 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 -->