使用带jquery的stop()只启动一次函数

时间:2014-10-24 13:37:19

标签: javascript jquery

我不太了解在jquery中使用stop()元素。 在此示例中,我尝试在用户启动myfunction函数时打开div(例如,通过单击触发器) 但是如果你点击几次,#mydiv无论如何都会消失,而不是等待3秒,因为它在你第一次点击后关闭了3秒。

function myfunction(hello)
 {
   $( "#mycontener" ).html( hello );
$( "#mydiv" ).stop( true, true ).slideDown( 250, function() {
setTimeout(function() {
  $("#mydiv").slideUp( 250 );
}, 3000);
});
};   

足够清楚了吗? 感谢

1 个答案:

答案 0 :(得分:1)

您需要清除超时以防止在将来的呼叫中发生超时。像这样:

(function () {
    var handle;
    function myfunction(hello) {
        clearTimeout(handle);

        $("#mycontener").html(hello);
        $("#mydiv").stop(true, true).slideDown(250, function () {
            handle = setTimeout(function () {
                $("#mydiv").slideUp(250);
            }, 3000);
        });
    }

    window.myfunction = myfunction;
})();