2009-08-07 99 views
3

所以我有幾個容器與此標記在頁面上:JQuery的最接近()幫助

 <div class="box w400"> 
      <div class="box-header"> 
       <span class="expand-collapse">expand/collapse</span> 
       <h3>Heading</h3> 
      </div> 
      <div class="box-content"> 
       <p>Some content here...</p> 
      </div> 
     </div> 

,我試圖以實現點擊.expand崩潰跨度之後,.box的內容DIV會向上或向下滑動(切換)。

下面是我使用jQuery的,我想用最接近()來實現這一目標:

 $(document).ready(function() { 
      $('.expand-collapse').click(function() { 
       $(this).closest('.box-content').slideToggle('slow'); 
      }); 
     }); 

但它不工作由於某種原因:(

回答

4

試試這個:

$(document).ready(function() { 
    $('.expand-collapse').click(function() { 
     $(this).parent().next('.box-content').slideToggle('slow'); 
    }); 
}); 

那選擇父div的下一個兄弟,它不使用最接近的。

+0

也不起作用。 – 2009-08-07 01:40:17

+0

@Richard Knop - 我編輯了答案,給它一個答案。 – karim79 2009-08-07 01:41:00

+0

謝謝你的作品:) – 2009-08-07 01:43:07

2

最接近()發現關閉父元素。在你的情況下,跨度沒有任何帶有.box-content類的父元素。爲什麼不做$('。box-content')。slideToggle('slow'); ??

編輯:我錯過了你在頁面上有幾個這樣的部分。父(),下一個應該工作。

+0

這將切換所有div與類.box-content而不是隻有一個。 – karim79 2009-08-07 01:42:13

+0

由於頁面上有多個容器,我希望每個.expand合攏跨度僅切換其.box內容,而不是全部在頁面上。 – 2009-08-07 01:42:22

+0

對不起,我重新閱讀帖子,看到每頁有幾個。 – 2009-08-07 01:43:13