2013-04-28 6 views
0

Я хочу закрыть (slideToggle) элемент списка с вложенными ul и li в нем, щелкая по другому элементу listenlement с вложенными 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 1» при нажатии на другой «Subtopic x».

FIDDLE

ответ

1

Я предлагаю вам сначала закрыть все открытые списки затем открыть щелкнул один:

удалять правила в li.closed> уль

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

Ok, спасибо. Но теперь анимация slideToggle исчезла. Я не хочу, чтобы элементы закрывались таким статическим способом. Можно ли это исправить? – sqe

+0

@ user2179266: Я обновил ответ –

+0

Отлично! Я не знал синтаксис .siblings до и очень интересно с дисплеем: никакого конфликта! Большое спасибо! – sqe

Смежные вопросы