2013-06-30 62 views
0

這裏的小提琴:http://jsfiddle.net/webguy262/e5ana/18/試圖將一個條件語句添加到jQuery的動畫

頁加載默認鎮場面。懸停地圖別針改變場景。

如果鼠標停止十秒鐘,默認場景返回。

試圖只在默認場景被隱藏時才這樣做。這是因爲如果默認場景可見,則代碼將運行,並將該默認場景動畫化並重新備份。

這裏就是我想...

if ($('#dt').css('bottom') == '0px') { 
var t; 
var del = 10000; //Ms delay 
    $(document).mousemove(function(){ 
    clearTimeout(t); 
    t = setTimeout(function(){ 
     //If the mouse is not moved 
     $(".town").animate({ 
      bottom: '0px' 
     }, 500); 
     $("#dt").animate({ 
      bottom: '126px' 
     }, 500); 
    }, del); 
}); 
} 

但它不工作。沒有腳本錯誤被拋出,並且沒有任何事情發生在場景中。

語法問題?沒有正確檢測#dt的位置?

+0

我看不到你的'a.dt' html – Shaddow

回答

0

我在想這是因爲當你調用鼠標移動時,你已經在你的函數中並且通過了if語句。也許嘗試這樣的事情:

var t 
, del = 10000; //Ms delay 

$(document).mousemove(function(){ 
    if ($('#dt').css('bottom') === '0px') { 
     clearTimeout(t); 
     t = setTimeout(function(){ 
      //If the mouse is not moved 
      $(".town").animate({ 
       bottom: '0px' 
      }, 500); 
      $("#dt").animate({ 
       bottom: '126px' 
      }, 500); 
     }, del); 
    } 
}); 
+0

謝謝!這樣可行。但我注意到的一件事是,如果將鼠標放在地圖引腳上,並且根本不移動它,超時功能將不會運行。但是,如果我移動鼠標 - 即使停留在引腳上 - 它的工作原理。在觸發後將鼠標從引腳上移開也起作用。只是你觸發一個別針而不移動的情況。鼠標輸入功能是否會阻止檢測一個不移動的鼠標?這可以解釋爲什麼輕輕地移動鼠標,但保持在引腳上會觸發定時器功能。思考? – webguy

+0

@ user2197029我不能確定地說,因爲我對你的項目不是很瞭解。但是你可以試着把你的超時設置到一個外部函數中,然後在mousemove上調用該函數,並且也可以在mouseenter和mouseleave上調用該函數(或者,我傾向於選擇mouseover和mouseout)。由於您的功能在設置新功能之前已經設置爲取消現有的超時功能。這可能取決於引腳的大小。 – relic