2009-08-07 58 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