2011-06-01 13 views
6

¿cómo puedo encontrar el id principal del div dentro de la tabla? que tienen la siguiente estructura:encontrar div principal dentro de <td> con jQuery

<div id="parent"> 
<table> 
<tbody> 
    <tr>            
    <td>          
    <div id="child" >  
</div> 
    </td>      
</tr>   
</tbody> 
</table> 
</div> 


<script type="text/javascript"> 
$(document).ready(function() 
{    
    var parent = $("#child").parent().attr("id"); 
    alert(parent); 
}); 

Cuando el div se encuentra dentro < td> matriz está vacía. Cuando muevo el div fuera de < td> funciona bien. ¿Puedes ayudarme a encontrar el div dentro?

gracias

Respuesta

5

Si se refiere usted quiere encontrar el ID de la DIV que contiene la tabla, a continuación, se pueden utilizar closest()

var parent = $("#child").parent().closest('div').attr("id"); 

Fiddle

EDITAR

Después de leer los documentos, closest() es mejor que parents() porque no viaja hasta el nodo raíz. Gracias por el aviso Andy E

+0

Use 'closest ('div')' en lugar de 'parents ('div: first')'. El primero es más eficiente. –

+0

@Andy E leyendo, tienes toda la razón. Actualizado – JohnP

10

Puede usar .closest(), encuentra el elemento primario más cercano que coincide con el selector especificado. En su caso:

var parentId = $('#child').parent().closest('div').attr('id'); 

Documentación: http://api.jquery.com/closest/

+0

Su selector actual no funcionará. Primero debe seleccionar el padre. La div más cercana a '# child' es ella misma. – JohnP

+0

Cierto, yo no sabía que el más cercano también verificaría el nodo inicial (código corregido). – salgiza

+0

+ 1d! Te perdiste la aceptación ya que el OP inicialmente seleccionó el tuyo. No es que el +15 importe mucho en este punto;) – JohnP

0
$(document).ready(function() 
{    
    var parent = $("#child").parent().attr("id"); 
    alert(parent); 
}); 

usted está tratando de leer el atributo de "id" del elemento y el no tiene atributos de nombre "id".

siguiente código funcionará:

<table> 
<tbody> 
    <tr>            
    <td id="divParent">          
    <div id="child" ></div> 
    </td>      
</tr>   
</tbody> 
</table> 

<script type="text/javascript"> 
$(document).ready(function() 
{    
    var parent = $("#child").parents('div:first').attr("id"); 
    alert(parent); 
}); 
</script> 

Esto le dará un mensaje de alerta de "divParent".

Cuestiones relacionadas