2013-04-28 269 views
0

我想關閉(slideToggle)一個嵌套的ul和li的監聽,當點擊另一個監聽時嵌套的ul和li。jQuery slideToggle li當點擊另一個li

這是我的jQuery的切換本身:

$(document).ready(function() { 
    $("ul > li.closed").click(function (e) { 
     if (e.target === this) { 
      var li = $(this).closest('li'); 
      li.find(' > ul').slideToggle('fast'); 
      $(this).toggleClass("closed open"); 
     } 
    }); 
}); 

在我的小提琴:我想關閉「主題1」,當點擊的「主題2」。 我想在點擊另一個「Subtopic x」時關閉「Subtopic 1」。

FIDDLE

回答

1

我建議你先關閉所有打開的列表中,然後打開一個點擊:

刪除規則li.closed> UL

li.closed > ul { 

} 

因爲display:none衝突與slideToggle()當您點擊在同一li

兩次和腳本改爲

$(document).ready(function() {  
    $("#nav li ul").css('display','none'); 
    $("ul > li.closed").click(function (e) { 
     if (e.target === this) { 
      $(this).siblings("li.open").find(" > ul").slideToggle('fast',function(){ 
       $(this).parents("li.open:first").toggleClass("open closed"); 
      }); 

      $(this).toggleClass("closed open").find(" > ul").slideToggle('fast'); 
     } 
    }); 
}); 
+0

好了,謝謝你。但是現在slideToggle動畫已經消失了。我不希望元素以靜態的方式關閉。有沒有可能解決這個問題? – sqe 2013-04-28 16:18:14

+0

@ user2179266:我更新了答案 – 2013-04-28 17:34:04

+0

非常好!我以前不知道.siblings語法,並且對顯示非常有趣:無衝突!非常感謝你! – sqe 2013-04-28 17:55:41