2011-07-28 23 views
142

Esto debería ser realmente simple pero estoy teniendo problemas con él. ¿Cómo obtengo un div principal de un elemento secundario?Obteniendo el div primario del elemento

HTML

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

JavaScript

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

yo habría pensado document.parent o parent.container funcionaría pero seguir recibiendo not defined errores. Tenga en cuenta que se define pDoc, pero no ciertas variables de la misma.

¿Alguna idea?

P.S. Prefiero evitar jQuery si es posible.

Respuesta

240

Usted está buscando parentNode, que hereda de ElementNode:

parentDiv = pDoc.parentNode; 

Referencias útiles:

  • DOM2 Core especificaciones - bien soportado por todos los navegadores
  • DOM2 HTML especificaciones - Fijaciones entre DOM y HTML
  • DOM3 Core especificación - algunas actualizaciones, no todo el apoyo de todos los principales navegadores
  • HTML5 specification - que ahora tiene los enlaces DOM/HTML en ella
8

La propiedad pDoc.parentElement o pDoc.parentNode le dará el elemento padre.

26

Si usted está buscando un tipo particular de elemento que está más lejos que el padre inmediato, puede utilizar una función que sube el DOM hasta que encuentra uno, o no lo hace:

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

creo que u tiene que asignar '' e1' a t' y poner la expr. 't.parentNode' en la condición de bucle' while' pero no 't' solamente. porque t será solo un valor, no una expresión. no es así? –

+1

Tienes razón ... – RobG

+0

con jQuery: el.más cercano (tagName) – Ullullu

2

Esto podría ayudarte.

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

Sabiendo que el padre de un elemento es útil cuando usted está tratando de posicionar a cabo el "flujo real" de los elementos.

El siguiente código dará como resultado el id del padre del elemento cuya identificación se proporciona. Puede ser utilizado para el diagnóstico de desalineación.

<!-- 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 --> 
Cuestiones relacionadas