2013-10-11 101 views
0

我無法更改要在「單擊」而不是「懸停」上調用的功能。我試圖改變「懸停」到「點擊」以及「切換」,沒有陽性結果更改懸停以單擊菜單

$('#menu li').hover(
    function(){ 
      $(this).stop().animate({height: '100px'},1000,function(){}); 
      $(this).find('div').show(600); 
     } 
    , 
    function(){ 
      $(this).stop().animate({height: '20px'},1000,function(){}); 
     } 
); 

我必須綁定事件,如果我想將它更改爲「點擊」?任何幫助是極大的讚賞。

這裏的小提琴:http://jsfiddle.net/GANeX/7/

回答

2

試試這個:

http://jsfiddle.net/GANeX/52/

var clicked = 0; 
$('#menu li').click(
    function(){ 
     if(clicked === 0){ 
      $(this).stop().animate({height: '100px'},1000,function(){}); 
      $(this).find('div').show(600); 
      clicked = 1; 
     } else if(clicked === 1){ 
      $(this).stop().animate({height: '20px'},1000,function(){}); 
      clicked = 0; 
     } 
    } 
); 

設置一個變量,以保持按狀態的跟蹤

+0

如果我想讓菜單比按鈕更寬,該怎麼辦? –

+0

你將不得不添加更多的樣式來專門定位按鈕寬度與下滑的項目寬度。或者它可能涉及設置帶有嵌套ul列表的菜單...通常菜單是使用嵌套的ul列表創建的,以創建水平或垂直菜單 –

+0

@m_p - 爲了時間的緣故,這裏是一個很好的嘖嘖,讓我的想法是什麼意思,通過嵌套ul列表 - http://cssmenumaker.com/blog/flat-dropdown-menu-tutorial - –

1

你傳入兩個參數$(...).click(clickHandle)。只需傳遞一個函數。

檢查http://api.jquery.com/click/

在兩個參數的情況下,

http://api.jquery.com/click/ 
+0

即時通訊不知道我明白,我需要擺脫這兩個匿名函數之一,並改變動畫切換? –

+0

你想要發生什麼?只需將所有功能放在一個功能 – xcorat

+1

我猜PAPARFRESH的答案就是你要找的。 – xcorat

1

click需求時,我改變了一切工作正常只有一個參數。

1

hover()需要兩個回調,一爲mouseenter,一個用於mouseleave。如果您想要將其更改爲點擊,並且第一次點擊開始第一次動畫,第二次點擊開始第二次,則需要添加狀態變量以確定您的元素是否被點擊過一次或兩次。

$('#menu li').click(
function(){ 
     if(this.clicked) 
     { 
     //callback 1 
     } 
     else 
     { 
     //callback 2 
     } 
     this.clicked = !this.clicked; 
    } 

);