Javascript 为什么jquery淡出在setTimeout中表现得很奇怪?
我有以下代码:Javascript 为什么jquery淡出在setTimeout中表现得很奇怪?,javascript,jquery,html,settimeout,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); $("#t
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);
});
编辑:根据下面更新的评论更改了答案 请尝试以下操作:
$("#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文档延迟-哈哈,这很有效!我仍然很好奇为什么以前的解决方案不起作用。