2010-07-13 38 views
0

我有這樣的代碼:爲什麼jQuery的fadeOut與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秒的超時。

問題是,現在淡出不會立即被調用,而只會在發生setTimeout時發生。 (即不是第一次淡出,然後出現一段時間,現在工具提示保持不變,然後一段時間後淡出,然後淡入新位置)。

什麼給?

順便說一句,這個代碼有同樣的問題:

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

回答

2

編輯:改變基於以下更新註釋的答案。

嘗試以下操作:

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

這就是我想要的不過是相反的。 = /我想淡出發生立即,但淡入發生1秒後。現在它們都在1秒後出現。 – 2010-07-13 17:00:25

+1

啊,好的!試試這個然後'.fadeOut('slow')。delay(1000).fadeIn('slow');'API Docs on delay - http://jqapi.com/#p=delay – HurnsMobile 2010-07-13 17:05:36

+0

哈哈,我仍然很好奇爲什麼以前的解決方案不起作用。 – 2010-07-13 17:13:12