2011-11-26 64 views
0

我在我的頁面底部有一個消息面板,通過應用負邊距來顯示。當它打開時,我會把它想是(以先到者爲準):click()和setTimeout問題

  1. 關閉,當用戶點擊#面板關閉(這是在面板上,所以 唯一可見的,當它打開時)

    OR

  2. 關閉6秒後

我的作品,直到我開始開閉重複它的代碼 - 那麼計時出錯。我相信我需要取消setTimeout,如果我點擊關閉了面板,但我無法得到這個工作。

$("#button").click(function() { 
    messagePanel.animate({ 
     marginTop: '-50px' //open 
    }, 600); 

    setTimeout(function(){ 
     messagePanel.animate({ 
      marginTop: '0px' //close 
     }, 600); 
    },6000) 

}); 

$('#panel-close').click(function() { 
    messagePanel.animate({ 
     marginTop: '0px' //close 
    }, 600); 
}); 

任何幫助表示讚賞!

+1

http://stackoverflow.com/questions/3015319/jquery-javascript-settimeout-cleartimeout – mplungjan

回答

0

如果您需要取消setTimeout事件,您需要通過setTimeout函數獲取timeoutID返回值,例如。

var timeoutId; 
timeoutId = setTimeout(function() {...}); 
$('#panel').click(function() { 
    clearTimeout(timeoutId); 
} 

看到https://developer.mozilla.org/en/DOM/window.clearTimeout更多細節

+0

感謝你 - 真的很感激! –

+0

您可能還希望通知在鼠標懸停時保持打開狀態,以防有人在鏈接消失時單擊鏈接,並且意外地點擊通知下的某些內容。要做到這一點,將onmouseover事件添加到通知中,以清除超時和重新設置它的onmouseout事件 –

+0

@KaeVerens - 感謝您的建議 - 是的,我絕對也想這樣 - 但我沒有任何運氣。你會如何建議我去解決它? –