Javascript 单击()并设置超时问题

Javascript 单击()并设置超时问题,javascript,jquery,Javascript,Jquery,我在页面底部有一个消息面板,通过应用负边距显示。当它打开时,我希望它(以先到者为准): 当用户单击#面板关闭时关闭(这在面板上,所以 仅在打开时可见) 或 6秒后关闭 我的代码一直工作,直到我开始反复打开和关闭它-然后计时出错。我相信如果我点击关闭面板,我需要取消设置超时,但是我无法让它工作 $("#button").click(function() { messagePanel.animate({ marginTop: '-50px' //open }, 600

我在页面底部有一个消息面板,通过应用负边距显示。当它打开时,我希望它(以先到者为准):

  • 当用户单击#面板关闭时关闭(这在面板上,所以 仅在打开时可见)

  • 6秒后关闭

  • 我的代码一直工作,直到我开始反复打开和关闭它-然后计时出错。我相信如果我点击关闭面板,我需要取消设置超时,但是我无法让它工作

    $("#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 );
    });
    

    感谢您的帮助

    如果需要取消setTimeout事件,则需要通过setTimeout函数获取timeoutID返回值,例如

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

    更多详情请参见

    谢谢-非常感谢!您可能还希望在鼠标悬停在通知上时该通知保持打开状态,以防有人在链接消失时单击该链接,并意外地单击通知下的某个内容。为此,在通知中添加一个onmouseover事件以清除超时,并添加一个onmouseout事件以重新设置超时it@KaeVerens-谢谢你的建议-是的,我当然也想要-但我没有任何运气。你建议我怎么做?