2013-05-07 27 views

回答

4

您有一個競爭事件處理程序的情況,最後一個(將高度設置爲5.7em的)勝出。事件處理程序實際上是堆疊的,因此您不斷添加關閉菜單的其他副本。

嘗試獨立保持打開/關閉狀態。像這樣的東西(jsfiddle):

$(document).ready(function() { 
    $('#nav').data('open', 0).mouseup(function() { 
     if ($(this).data('open') == 0) { 
      $(this).css('height', '33em').data('open', 1); 
     } else { 
      $(this).css('height', '5.7em').data('open', 0); 
     } 
    }); 
}); 

或者更好的是,移動CSS細節的CSS類:

#nav { height: 5.7em; } 
.open { height: 33em !important; } 

...並且只需撥動這個類和關閉(jsfiddle):

$(document).ready(function() { 
    $('#nav').mouseup(function() { 
     $(this).toggleClass('open'); 
    }); 
}); 
+0

我認爲toggleClass解決方案是一個我之後......簡單到如此地步。謝謝 ! – BryanK 2013-05-08 02:08:51

2

使用一個類來標記當前狀態。這是一個非常有用的技術,有很多用途。在這種情況下,我使用了一個名爲「selected」的類,但是你可以使用任何你喜歡的。

這撥弄顯示它的工作:
http://jsfiddle.net/acturbo/afcnR/1/

的jQuery:

$(document).ready(function(){ 

     $('#nav').on("mouseup", function(){ 

      $(this).toggleClass("selected"); 

      if ($(this).hasClass("selected")){ 
       $(this).css('height','33em'); 
      }else{ 
        $(this).css('height','5.7em');  
      } 


     }); 
    });