【问题标题】:Why does jquery fadeOut act strangely with setTimeout?为什么 jquery fadeOut 与 setTimeout 的行为奇怪?
【发布时间】:2010-07-13 16:43:29
【问题描述】:

我有这个代码:

clearTimeout(tooltiptimeout);
tooltiptimeout="";

$("#tool").fadeOut("slow").queue(function(){
    tooltiptimeout=setTimeout(function(){
        $("#tool").css("left",item.pageX-33);
        $("#tool").css( "top",item.pageY-95);
        $("#tool").fadeIn("slow");
    }, 1000);
    $(this).dequeue();
});

它应该做的是:当用户将鼠标悬停在对象上时,工具提示将显示在那里。然后,当用户将鼠标移开时,工具提示应立即开始淡出。稍后当用户将他/她的鼠标放在另一个对象上时,会在工具提示出现在新位置之前调用 1 秒的超时。

问题是,现在淡出没有被立即调用,而是只在 setTimeout 发生时发生。 (即不是先淡出然后过一会儿才出现。现在工具提示保持在原位,然后过了一会儿,它淡出然后在新位置淡入)。

什么给了?

顺便说一句,这段代码也有同样的问题:

    $("#tool").fadeOut("slow",function(){
    tooltiptimeout=setTimeout(function(){
        $("#tool").css("left",item.pageX-33);
        $("#tool").css( "top",item.pageY-95);
        $("#tool").fadeIn("slow");
    }, 1000);
});

【问题讨论】:

    标签: javascript jquery html settimeout


    【解决方案1】:

    编辑:根据下面更新的评论更改了答案。

    尝试以下方法:

    $("#tool").fadeOut("slow").delay('1000')
        .css("left",item.pageX-33)
        .css( "top",item.pageY-95)
        .fadeIn("slow");
    

    【讨论】:

    • 这与我想要的相反。 =/我希望淡出立即发生,但淡入在 1 秒后发生。现在它们都在 1 秒后发生。
    • 啊,好吧!试试这个然后.fadeOut('slow').delay(1000).fadeIn('slow'); API Docs on delay - jqapi.com/#p=delay
    • 哈哈,行得通!我仍然很好奇为什么以前的解决方案不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多