Abrufen des übergeordneten Div des Elements


208

Das sollte wirklich einfach sein, aber ich habe Probleme damit. Wie erhalte ich ein übergeordnetes Div eines untergeordneten Elements?

Mein HTML:

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

Mein JavaScript:

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

Ich hätte gedacht document.parentoder parent.containerwürde funktionieren, aber ich bekomme immer wieder not definedFehler. Beachten Sie, dass das pDocdefiniert ist, nur nicht bestimmte Variablen davon.

Irgendwelche Ideen?

PS Ich würde es vorziehen, jQuery wenn möglich zu vermeiden.

Antworten:



33

Wenn Sie nach einem bestimmten Elementtyp suchen, der weiter entfernt ist als das unmittelbare übergeordnete Element, können Sie eine Funktion verwenden, die das DOM aufruft, bis eines gefunden wird, oder nicht:

// 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;
}

mit jQuery: el.closest (tagName)
Ullullu

3
@ Ullullu - mal sehen, 10.000 Zeilen Bibliothek oder eine 10-Zeilen-Funktion? ;-)
RobG

14

Die Eigenschaft pDoc.parentElementoder pDoc.parentNodeerhalten Sie das übergeordnete Element.




-1

Die Kenntnis des übergeordneten Elements eines Elements ist hilfreich, wenn Sie versuchen, sie im "realen Fluss" von Elementen zu positionieren.

Der unten angegebene Code gibt die ID des übergeordneten Elements des Elements aus, dessen ID angegeben ist. Kann zur Diagnose einer Fehlausrichtung verwendet werden.

<!-- 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 -->
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.