2011-11-26 65 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 - 感谢您的建议 - 是的,我绝对也想这样 - 但我没有任何运气。你会如何建议我去解决它? –