2011-06-01 3 views
6

comment puis-je trouver l'ID parent de la div à l'intérieur de la table? Je la structure suivante:trouver div parent à l'intérieur <td> avec 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); 
}); 

Lorsque la div est à l'intérieur < td> parent est vide. Quand je déplace le div à l'extérieur < td> ça marche bien. Pouvez-vous m'aider à trouver la div à l'intérieur?

grâce

Répondre

5

Si vous voulez dire que vous voulez trouver l'ID de la DIV qui contient votre table, vous pouvez utiliser closest()

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

Fiddle

EDIT

Après avoir lu les documents, closest() est mieux que parents() car il ne se déplace pas jusqu'au nœud racine. Merci pour la tête Andy E

+0

Utilisez 'nearest ('div')' plutôt que 'parents ('div: first')'. Le premier est plus efficace. –

+0

@Andy E en lisant, vous avez absolument raison. Mis à jour – JohnP

10

Vous pouvez utiliser .closest(), il trouve le parent le plus proche qui correspond au sélecteur spécifié. Dans votre cas:

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

Documentation: http://api.jquery.com/closest/

+0

Votre sélecteur actuel ne fonctionnera pas. Vous devez d'abord sélectionner le parent. Le div le plus proche de '# child' est lui-même. – JohnP

+0

Certes, je ne connaissais pas le plus proche de vérifier également le nœud de départ (code corrigé). – salgiza

+0

+ 1d! Vous avez raté l'acceptation car l'OP a sélectionné le vôtre. Pas que le +15 importe beaucoup à ce stade;) – JohnP

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

Vous essayez de lire l'attribut de "id" de l'élément et n'a aucun attribut de nom "id".

code suivant fonctionnera:

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

Cela vous donnera un message d'alerte de "divParent".

Questions connexes