2011-12-27 73 views
0

我有這個下拉菜單,當一個菜單被點擊,如果有另一個活動,這一個是去激活,然後新的激活隱藏下拉上的'身體'點擊產生需要雙擊再次顯示

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

不知道,但你需要像'手風琴'? – 2011-12-27 09:27:15

+0

我看起來像其實...如果我沒有解釋自己,你可以進入http://toniweb.us/gm,並嘗試更改語言或看到電話號碼 – 2011-12-27 09:29:29

+0

jsfiddle.net示例將是非常有用的很多 – Armin 2011-12-27 10:32:14

回答

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'); 
     } 
    }); 
}); 
相關問題