2011-12-27 2 views
0

У меня есть это выпадающее меню, которое при нажатии одного из меню, если было другое, активен, этот отключен, а затем активирован новый.скрыть выпадающий список на 'body' нажмите для просмотра нажмите на кнопку "Кому" нажмите, чтобы показать снова

$('.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. 
     } 
    }); 

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

Любая идея, почему?

+0

не уверен, но вам нужно что-то вроде «аккордеона»? –

+0

Я вроде как на самом деле ... если я не объяснил, что вы можете войти в http://toniweb.us/gm и попытаться изменить язык или посмотреть номера телефонов –

+0

Пример jsfiddle.net был бы очень полезен много – Armin

ответ

1

Вот что-то, что может помочь. Вот 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'); 
     } 
    }); 
});