2013-04-28 261 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