скольжение нескольких элементов по клику

у меня есть вертикальная строка меню, которая содержит подменю. Есть 9-10 меню, и каждое меню содержит 3 подменю.

что мне нужно, если открыто меню 1, и кто-то нажимает на меню 3, меню 1 должно закрыться, а меню 3 откроется

 $('#nav li a').click(function(){
    var sds = document.getElementById("dum");
    if(sds == null){
    ;
    }
    var sdss = document.getElementById("dumdiv");
    if(sdss == null){



    }
    if(sdss != null){
            var s = $(this).attr('id');
            var imgid=$("#"+s+" img").attr('id');
            var imgsrc=$("#"+imgid+"").attr('src');
            if(imgsrc=="images/insert.GIF")
            {
                $("#"+imgid+"").attr('src','images/remove.GIF');
                $(this).next().slideDown(400);
                $("#"+s+"").css("background-color","#142878");
            }
            else
            {
                $("#"+imgid+"").attr('src','images/insert.GIF');
                $(this).next().slideUp(400);
                $("#"+s+"").css("background-color","#2d539a");
            }
    }
        });

вот скрипка


person Atal Shrivastava    schedule 21.01.2014    source источник
comment
Вы можете найти аналогичный вопрос и ответы здесь: stackoverflow.com/questions/10901626/hide-menu-onclick   -  person    schedule 21.01.2014


Ответы (3)


Попробуй это:

 $('.count').slideUp(400);     //<----add this line
 $(this).next().slideDown(400);

Демо


Обновления:

попробуй это:

if (imgsrc == "images/insert.GIF") {
    $("#" + imgid + "").attr('src', 'images/remove.GIF');
    $('.count').slideUp(400);
    $(this).next().slideDown(400);
    $("#" + s + "").css("background-color", "#142878");
} else {
    $("#" + imgid + "").attr('src', 'images/insert.GIF');
    $('.count').slideUp(400);  //<--------------------add here
    $(this).next().slideDown(400);  //<---------------and here too.
    $("#" + s + "").css("background-color", "#2d539a");
}
person Jai    schedule 21.01.2014
comment
если вы нажмете на 2 меню, 3-е меню и так далее, а затем снова нажмите на меню 2, сначала оно закроет текущее меню одним щелчком, а другим щелчком откроется текущее меню, что означает, что иногда требуется 2 щелчка. - person Atal Shrivastava; 21.01.2014

Использовать

$('a').next().slideUp(400); 

Если вы нажмете на любое меню, это закроет текущее меню и откроет новое.

Вот обновленная Fiddle.

person Linga    schedule 21.01.2014
comment
если вы нажмете на 2 меню, 3-е меню и так далее, а затем снова нажмите на меню 2, сначала оно закроет текущее меню одним щелчком, а другим щелчком откроется текущее меню, что означает, что иногда требуется 2 щелчка. та же проблема для всех ответов - person Atal Shrivastava; 21.01.2014

Добавьте это в начало кода:

$('#nav li a').click(function(){
    $(this).closest('li').siblings('li').find('.count').slideUp();
    // Rest of the code here

Обновленная демонстрация

person Felix    schedule 21.01.2014