2012-06-12 33 views
0

我想從我的錨標籤中定位最接近的div。所以爲了做到這一點,我做了一個小功能,但它不工作,我也想要一個div顯示一次有ID「信息」。.closest在jquery

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 


<style type="text/css"> 


.frm { float:left; width:700px;} 


.information { display:none} 

</style> 



<script type="text/javascript" src="jquery-1.7.2.js"></script> 


<script type="text/javascript"> 

$(function(){ 


    $('.frm').find('a').each(function(){ 

     $(this).click(function(){ 

     $(this).closest('div').css ('display','block') 


      } 
     ) 

     }) 

    }) 


</script> 


</head> 

<body> 

<div class="wrap"> 
<div class="frm"> 
<ul> 

<li>heading</li> 
<li>paragraph</li> 
<li><a href="#">link</a></li> 

</ul> 


<div class="information"> 

<h6>jitender</h6> 
<p>containg data</p> 

</div> 

</div> 

<div class="frm"> 
<ul> 

<li>heading</li> 
<li>paragraph</li> 
<li><a href="#">link</a></li> 

</ul> 


<div class="information"> 

<h6>jitender</h6> 
<p>containg data</p> 

</div> 

</div> 


</div> 

</body> 
+0

我知道這個名字有點令人困惑,但'nearest(x)'實際上意味着「最接近的父節點匹配規則x」。 –

回答

1

看到這個工作小提琴:http://jsfiddle.net/HackedByChinese/twzuq/

$('.frm a').click(function(e) { 
    e.preventDefault(); 

    $('.information').hide(); // make sure all .information divs are hidden 
    $(this).closest('ul').next('.information').show(); // show the .information div nearest the link 
});​ 

正如評論所說,.closest橫穿潮流元素的祖先發現,選擇相匹配的元素。因此,在此我找到包含點擊鏈接的UL,然後使用.next選擇具有.information類的下一個元素。

此外,.show.hide設置display = noneblock(或inline,如果元素是內置),分別。使用.css('display','none')的快捷方式。

+0

謝謝先生它工作得很好,我有一個問題,我們可以給最接近的直接id:$(this).closest('ul#new')。next('。information')。show(); – Carlos

+0

是的,這將工作(或簡單地'$(this).closest('#new')...'。如果'id'對每個部分都是唯一的,那麼你只需要'$(' #myuniqueid')。next('。information')。show();'。 – HackedByChinese

+0

多謝先生 – Carlos