Jquery下推/ SlideDown冲突

时间:2014-03-25 05:09:04

标签: jquery html css

我正在跟踪我在stackoverflow上找到的小提琴

http://jsfiddle.net/abtPH/3/

$('li').on('click', function(e){
  $(this).find('.outer').slideToggle();
  $(this).toggleClass('active', 400);
});

一切都按照需要运行,但是,当我点击多个向下滑动时,它们必须按照打开的顺序关闭,因为一旦点击了新的向下滑动它们就不会关闭。

有一种方法可以在打开新的向下滑动后关闭每张幻灯片吗?

2 个答案:

答案 0 :(得分:0)

您可以定位点击的'.outer'兄弟姐妹关闭其他'li'

$('li').on('click', function (e) {
    $(this).find('.outer').slideToggle();
    $(this).toggleClass('active', 400);
    //remove the active class, then move to its '.outer' child and slide it up
    $(this).siblings().removeClass('active').find('.outer').slideUp();
});

答案 1 :(得分:0)

马克S是正确的

如果你想进一步优化代码,你可以写这样的

$('li').on('click', function(e){
  $(this).find('.outer').slideToggle().end().siblings().removeClass('active').find('.outer').slideUp();                  
  $(this).toggleClass('active', 400);
});

旁注:

在jsfiddele中你提供了代码div style =“width:156px; height:声明了内联样式。它不是很好的练习而是你可以在div上定义类并在样式表中声明相应的样式