2011-01-02 6 views
1

私は関数mousemove({})を使用します。このmousemove関数は、少なくとも1秒前に最後に呼び出された場合にのみ呼び出されます。私はこれを行うためのより良い方法があり、私はタイマーのいくつかの種類を使用し、jQueryチェックmousemover every x ms

if(cur_time - last_time > 1) 
    do_the_stuff(); 
  1. 条件を出してもよい知っていますか?
  2. もしそうでなければ、cur_timeを得るのに(または時間がかかるために)使うべき関数は何ですか?

答えて

2

これは良いアプローチのようです。コードは次のようになります。

var last_moved; 
$(document).mousemove(function(e){ 
    if (!last_moved || (e.timeStamp - last_moved > 1000)) { 
     do_the_stuff(); 

     last_moved = e.timeStamp; 
    } 
}); 

a working example on jsFiddleを参照してください。

+0

私にとって、それはjsFiddle上で奇妙に動作しています...私は一見を持っています – Cristy

+0

@Cristyハンドラが最初のマウスオーバーで起動されなかったという明白な問題を修正しました。新しいリンクを見てください。 – lonesomeday

+0

私はあなたの "バグ"を見つけました:D http://jsfiddle.net/bY3CC/3/ last_movedはif()内でのみ有効です。これは、 "last_move"が起きているからです。D – Cristy

0

これは最善の方法ではありません。その声明をmousemoveに入れて、必要なものを手に入れてください。

+0

ここで、タイマーはどのように使用しますか? cur_timeはどのように入手できますか? – Cristy

+0

ページのロード時にsetTimeout()を呼び出します。 last_timeをグローバル変数に取り込みます。 – Tahbaza

+1

http://api.jquery.com/event.timeStamp/を参照して現在時刻を取得してください。 –

関連する問題