2011-01-02 4 views
1

저는 mousemove ({}) 함수를 사용합니다. 이 mousemove 함수가 적어도 1 초 전에 마지막으로 호출 된 경우에만 호출되도록합니다. 내가 타이머의 어떤 종류를 사용하는 조건jQuery는 모든 x ms마다 mousemover를 확인합니다.

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는 "last_move"가 발생했을 때 if() 내부에서만 uptaded해야한다 : D – Cristy

0

아니, 그렇게하는 것이 가장 좋은 방법 인 것 같습니다. 그 진술을 mousemove에 넣으면 필요한 것을 얻을 수 있습니다.

+0

좋아, 어떻게 타이머를 사용합니까? cur_time은 어떻게 얻을 수 있습니까? – Cristy

+0

페이지로드시 setTimeout()을 호출하십시오. 전역 변수에서 last_time을 캡처하십시오. – Tahbaza

+1

http://api.jquery.com/event.timeStamp/에서 현재 시간을 확인하십시오. –

관련 문제