2009-12-20 93 views

回答

4

是的,使用setTimeout並在每次鼠標移動時清除它。如果鼠標未在setTimeout中指定的時間內移動,則可以假定鼠標已停止移動。利用jQuery的,你可以做這樣的事情:

var stop_timeout = false; 
$(function() { 
    $().mousemove(function() { 
     clearTimeout(stop_timeout); 
     stop_timeout = setTimeout(function() { 
      alert("The mouse has stopped."); 
     }, 1000);    
    }); 
}); 

這是一個有點重設置和取消超時每一次鼠標移動,但它應該符合您的需求。

+0

你應該將'無功STOP_TIMEOUT = FALSE;'匿名函數中,因爲它不需要匿名。 – 2009-12-20 20:59:34

+0

@Justin。回答你的代碼版本。謝謝。 – Moshe 2009-12-20 21:21:39

1

使用hoverintent,它爲你做了這一切。它有一個跟蹤你的鼠標移動的時間間隔,並知道你的加速度減慢的時間(所以你試圖「真正」懸停在某物上)。

它也非常易於使用。你基本上只需要改變你的

$(selector).hover(...)

$(selector).hoverIntent(...)

http://cherne.net/brian/resources/jquery.hoverIntent.html