2014-02-03 3 views
0

Я собираюсь сделать простое выпадающее меню с некоторым jQuery.JQuery: только одно раскрывающееся меню открылось за один раз

Вот план моего меню:

http://jsfiddle.net/W9c9y/

Это мой JQuery:

$("a.drop_down").click(function() { 

if ($(this).siblings("ul").is(":hidden")) { 
$(this).siblings("ul").slideToggle('slow','easeOutBounce'); 
} 

else { 
$(this).siblings("ul").hide(); 
} 
}); 

А вот это то, что я пытаюсь достичь:

Я хочу, чтобы одно раскрывающееся меню открывалось за раз, любой щелчок меню (вложенные подменю) должен закрыть уже открытое раскрывающееся меню. Конечно, если я нажму на другое раскрывающееся меню, он не только должен закрыть открытое меню, но и упасть.

Я бы очень признателен за любые предложения.

ответ

1
$("a.drop_down").click(function() { 
    if ($(this).siblings("ul").is(":hidden")) { 
    $(".main_list ul").hide(); 
    $(this).siblings("ul").slideToggle('slow','easeOutBounce'); 
    } 

    else { 
    $(this).siblings("ul").hide(); 
    } 
    }); 

Скрипки: - http://jsfiddle.net/W9c9y/8/

+0

Почему вы повторяете условие 'if' дважды? 'f ($ (this) .siblings (" ul "). is (": hidden ") == true)' и 'if ($ (this) .siblings (" ul "). is (": hidden ")) 'делать то же самое. –

+0

oops ... отредактировал .. –

+1

Спасибо за ваш быстрый ответ, он работает! – user2399931

0

Просто дать открытый DropDown класс «открыть», а затем скрыть соответствующие ul элементы с этим классом, когда новый выпадающий должны быть показаны:

$("a.drop_down").click(function() { 
    var $ul = $(this).siblings("ul"); 
    if ($ul.is(":hidden")) { 
     $('.open').hide(); 
     $ul.addClass('open').slideToggle('slow','easeOutBounce'); 
    } 
    else { 
     $ul.hide(); 
    } 
}); 

JSFiddle demo.

+0

Большое вам спасибо за идею, он отлично работает, тоже! – user2399931

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