2014-06-19 2 views
1

제목에서 알 수 있듯이 MouseDown 문제가 있습니다. 내가 지금이 일 이상 스택 오버플로에서 주위를 찾고있다 "의사"MouseDown을 사용하는 동안 먼저 숫자를 천천히 줄이고 속도를 줄입니다. (jQuery)

While ("#arrowUp").mouseDown(function() { 
    counter++; //One time directly when pressed 
    if(MouseDownTime > 500){ //500ms that is 
     setTimeOut({counter++}, 75); //Meaning, every 75ms counter++ 
    } 

}

에서 원하는 무엇. 그리고 나는 75ms마다 증가하는 데 성공했지만 그 후에도 if(MouseDownTime > 500) -statement를 만들 수 없었고 500ms 후에도 75ms마다 카운터를 늘릴 수있었습니다.

$("#tempUp").mousedown(function() {  //When longer pressed, automatically faster increase Temperature 
    int = setInterval(editTemp(currTemp+1), 250); 
    }) 
       .mouseup(function() { 
    clearInterval(int); 
    numberOfRepeats = 0;   
    }); 

이것은 지금까지 내 기능 중 하나입니다. 아무도 나를 도울 수 있습니까? 아니면 잘못된 방식으로 질문하고 있습니까? 내가 제대로 이해하는 경우 (비 건설적인)

답변

5

당신과 같이 setTimeoutsetInterval의 조합을 사용할 수있다 :

$(document).ready(function() { 
    var temp = 0; // Initial value to set when clicked 
    var to = null; // Timeout object 
    var int = null; // Interval object 

    $("#tempUp").on("mousedown", function() { 
     temp++; 
     $("#tempShow").html(temp); 
     to = setTimeout(function() { 
      int = setInterval(function() { 
       temp++; 
       $("#Temp").html(temp); 
      }, 75); // Interval time for which to increment the temp value; every 75 ms on mouse down 
     }, 500); // Initial wait time after first click = 500 ms 
    }).on("mouseup", function() { 
     clearTimeout(to); // Clear the timeout 
     clearInterval(int); // Clear the interval 
    }); 
}); 

는 예를 들어이 FIDDLE를 참조하십시오.

+0

고맙습니다. 그것은 내 사이트를 더 잘 만든다! 이상하게도 나는 이것을 어디에서도 발견 할 수 없었다. 많은 사람들이 이것을 사용하고있는 것 같아요. –

+0

기꺼이 도와 드리겠습니다! 실제로 많은 사람들이 사용하는 것처럼 보이지만 한두 단어로 문제를 설명하는 것이 다소 어렵습니다. 어쩌면 그 문제에 관해서는 찾기가 어렵 기 때문일 수도 있습니다. – ZiNNED