2011-06-01 130 views
6

我怎么能找到表内的div的父ID? 我有以下结构:找到父母div里面​​与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); 
}); 

当在div是内部< TD>的父是空的。当我将< td以外的div移动时,它可以正常工作。你能帮我找到里面的div吗?

感谢

回答

5

如果你的意思是你想找到包含您的表中的DIV的ID,那么你可以使用closest()

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

Fiddle

编辑

阅读文档后,closest()比好,因为它不会传播到根节点。感谢您的支持安迪E

+0

使用'最接近'('div')'而不是'父母'('div:first')'。前者更高效。 – 2011-06-01 09:49:15

+0

@Andy E读起来,你是对的。已更新 – JohnP 2011-06-01 09:55:15

10

您可以使用.closest(),它找到最匹配的指定选择器的父母。你的情况:

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

文档:http://api.jquery.com/closest/

+0

您当前的选择器不起作用。您需要先选择父项。最接近'#child'的div本身就是。 – JohnP 2011-06-01 09:56:02

+0

确实,我不知道最近也会检查起始节点(代码已更正)。 – salgiza 2011-06-01 10:54:53

+0

+ 1d!你最初选择你的时候错过了接受。在这一点上+15并不重要;) – JohnP 2011-06-01 11:03:01

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

您正在尝试读取元素的“ID”的属性和具有名称“ID”的任何属性。

下面的代码将工作:

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

这会给你 “divParent” 的警告信息。