2009-12-20 99 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