2012-11-08 91 views
2

我有一個accoridan切換,目前工作正常,除了我想要它,所以一次只擴展一個項目。當你打開一個項目並打開另一個項目時,我想讓原來的一個關閉。jQuery:手風琴切換 - 關閉Div當兄弟打開

任何想法,我應該添加到我的代碼,讓這個工作?

下面的代碼:

$(document).ready(function() { 

$('.internal').hide(); 

$('.slider').click(function() { 

    $(this).next('.internal').slideToggle(); 
}).toggle(function() { 
    $(this).children("span").html("minus sign"); 
}, function() { 
    $(this).children("span").html("plus sign"); 
}); 

}); 

我在這裏建立了一個小提琴:http://jsfiddle.net/Lg9Mn/17/

謝謝!

回答

0

試試這個代碼

$(document).ready(function() { 

    $('.internal').hide(); 

    $('.slider').click(function() { 
     $('.internal').not($(this).next('.internal')).hide(); 
     $('.slider').not($(this)).children("span").html("plus sign"); 

     if($(this).next('.internal').is(':visible')){ 
      $(this).children("span").html("plus sign"); 
     } 
     else{ 
      $(this).children("span").html("minus sign"); 
     } 
     $(this).next('.internal').slideToggle(); 
    }); 
}); 

需要把它添加到您的點擊事件

$('.internal').not($(this).next('.internal')).hide(); 

Check Fiddle

+0

感謝您的超快反應!這裏的一個問題(類似於其他答案)是當您點擊一個新項目時,原始項目在關閉後仍然有一個減號。當div關閉時,有什麼辦法可以將它改回加號? – Jake

+0

@Jake ..增加了更改..檢查更新後的帖子 –

+0

道歉,我沒有注意到更新!這似乎工作,但只有幾次點擊。您可以看到,如果您單擊幻燈片1,然後滑動2,然後再滑動1,則幻燈片1的旁邊會有一個加號,即使它已打開。 – Jake

1

只需隱藏所有帶班internal(使用slideUp)你看之前的元素正確的:

$(document).ready(function() { 

    $('.internal').hide(); 

    $('.slider').click(function() { 
     $('.internal').slideUp(); 
     $('.slider').not($(this)).children("span").html("plus sign"); 
     if($(this).next('.internal').css("display") == "none"){ 
      $(this).next('.internal').slideDown(); 
      $(this).children("span").html("minus sign"); 
     }else{ 
      $(this).next('.internal').slideUp(); 
      $(this).children("span").html("plus sign"); 
     } 
    }) 
}); 

http://jsfiddle.net/Lg9Mn/30/

+0

如果你在同一個事業部再次單擊都不行! –

+0

@ Sushanth--好點。固定。 –

+0

感謝您的快速響應!這裏唯一的問題是,一旦你點擊一個新項目,原始項目在關閉後仍然有一個減號。當div關閉時,有什麼辦法可以將它改回加號? – Jake