click()和setTimeout问题

时间:2011-11-26 09:36:24

标签: javascript jquery

我的页面底部有一个消息面板,我通过应用负边距显示。当它打开时,我想要它(无论哪个):

  1. 当用户点击#panel-close时关闭(这是在面板上,所以 仅在打开时可见

    或者

  2. 6秒后关闭

  3. 我的代码一直工作,直到我重复打开和关闭它 - 然后时机出错了。我相信如果我通过点击关闭了面板,我需要取消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 个答案:

答案 0 :(得分:0)

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

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

请参阅https://developer.mozilla.org/en/DOM/window.clearTimeout了解更多详情