скрыть выпадающий список "тело", при нажатии которого требуется двойной щелчок, чтобы отобразить снова - PullRequest
0 голосов
/ 27 декабря 2011

у меня есть это выпадающее меню, которое при нажатии на одно меню, если было активно другое, отключается, а затем активируется новое

$('.idiomas span.current').toggle(function(){
                            //alert(true);
                            $('.idiomas span.clicked').next('ul').hide();
                            $('.idiomas span.clicked').removeClass('clicked');
                            $(this).next('ul').fadeIn();
                            $(this).addClass('clicked');

                    },function(){
                            $(this).next('ul').hide();
                            $('.idiomas span.current:not(.clicked)').show();



                });

Хорошо, пока здесь работает нормально. но потом я хотел, чтобы меню были скрыты, когда пользователь щелкает по всему меню; понял, что при нажатии на теле должен работать как мне нужно

    $('body').bind('click', function(e) {
        if($(e.target).closest('.idiomas ul').length == 0) {
            // se ha clickado fuera del menu
            $('.idiomas ul').hide();
            $('.idiomas span.current').removeClass('clicked').show();
            $('.facebook').css('visibility','visible');
        }else{
            //dentro: no hacemos nada.
        }
    });

и он скрывается, но мне нужно дважды щелкнуть в следующем пункте меню, чтобы сделать видимым его подменю,

есть идеи почему?

1 Ответ

1 голос
/ 27 декабря 2011

Вот кое-что, что может помочь.Вот JSFiddle для него: http://jsfiddle.net/aTqP5/

Основная суть вашей проблемы заключается в том, что у переключателя есть 2 состояния, и когда вы нажимаете на тело, элемент скрывается, но состояние переключателя все еще находится в состоянии «показать».и должен пойти, чтобы «скрыть», затем снова «показать», следовательно, дважды щелкнув.

$(document).ready(function(){    
    $('.idiomas span.current').click(function(event){
        event.stopPropagation();
        if ( $(this).hasClass('clicked') ) {
            $(this).removeClass('clicked');
            $(this).siblings('ul').hide();
        } else {
            $('.idiomas span.clicked').removeClass('clicked').siblings('ul').hide();
            $(this).addClass('clicked');
            $(this).siblings('ul').fadeIn();
        }
    });

    $('body').click(function(event) {
        event.stopPropagation();
        if ( $('.idiomas span.clicked').length > 0 ) {
            $('.idiomas ul').hide();
            $('.idiomas span.current').removeClass('clicked');
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...