Obtendo a div pai do elemento

208

Isso deve ser muito simples, mas estou tendo problemas com isso. Como obtenho uma div pai de um elemento filho?

Meu HTML:

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

Meu JavaScript:

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

Eu teria pensado document.parentou parent.containerfuncionaria, mas continuo recebendo not definederros. Observe que o pDocé definido, mas não apenas algumas variáveis.

Alguma ideia?

PS: Eu preferiria evitar o jQuery, se possível.

OVERTONE
fonte

Respostas:

33

Se você estiver procurando por um tipo específico de elemento que esteja mais distante do que o pai imediato, poderá usar uma função que sobe no DOM até encontrar um ou não:

// 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;
}
RobG
fonte
com jQuery: el.closest (tagName)
Ullullu
3
@ Ullullu - vamos ver, 10.000 linhas de biblioteca ou uma função de 10 linhas? ;-)
RobG
14

A propriedade pDoc.parentElementou pDoc.parentNodevocê receberá o elemento pai.

Thor Jacobsen
fonte
0

Isso pode ajudá-lo.

ParentID = pDoc.offsetParent;
alert(ParentID.id); 
Sinan ÇALIŞKAN
fonte
-1

Conhecer o pai de um elemento é útil quando você está tentando posicioná-lo no "fluxo real" dos elementos.

Abaixo do código fornecido, será gerado o ID do pai do elemento cujo ID é fornecido. Pode ser usado para diagnóstico de desalinhamento.

<!-- 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 -->
vish0910
fonte