为什么jquery fadeOut对setTimeout行为奇怪?

时间:2010-07-13 16:43:30

标签: javascript jquery html settimeout

我有这段代码:

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秒。

问题是,现在fadeout不会立即被调用,而只会在setTimeout发生时发生。 (也就是说,而不是先淡出然后再出现一段时间。现在工具提示保持原位,然后一段时间后,它淡出然后在新位置淡入。)

是什么给出了?

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

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

1 个答案:

答案 0 :(得分:2)

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

尝试以下方法:

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