2009-12-20 16 views

Odpowiedz

24

W zdarzeniu mousedown() ten kod uruchamia powtarzający się zegar (co 500 ms w tym przykładzie), który jest anulowany, gdy wystąpi zdarzenie mouseup(). To powinno być dostosowane do tego, co chcesz:

var intervalId; 
$("#button").mousedown(function() { 
    intervalId = setInterval(do_something, 500); 
}).mouseup(function() { 
    clearInterval(intervalId); 
}); 

function do_something() { 
    // whatever 
} 

Zobacz setInterval() Więcej informacji na temat rozliczeń liczniki.

+1

Jeśli chcesz, aby zdarzenie miało miejsce od razu, ORAZ co 500 milisekund, po prostu wywołaj 'do_something()' bezpośrednio przed wywołaniem setInterval. –

+0

@TylerCollier Dzięki za wskazanie. Następnie działa jak kliknięcie i powtarzające się działanie. Bardzo przydatny. W moim przypadku musiałem również przekazać parametry, do tego trzeba przypisać funkcję anonimową: 'setInterval (function() {mojafunkcja (wartośćA, wartośćB);}, 500);' –

+0

@TylerCollier czy ktoś może mi powiedzieć, dlaczego nie ten przystanek? http://jsfiddle.net/oxpku7f1/1/ – Arbaaz

5

Chciałbym używać funkcji javascript setInterval() w funkcji, która jest wywoływana po naciśnięciu myszy.

<input type="button" id="button" onmousedown="inter=setInterval(startAction, 1*1000);" 
onmouseup="clearInterval(inter);" value="click here" /> 

<script type="text/javascript"> 
    function startAction(){ 
     //whatever you want done 
    } 
</script> 
4

Widzę problem z obydwoma rozwiązaniami wymienionymi powyżej.

onmouseup jest wyzwalany tylko wtedy, gdy mysz zostanie zwolniona, gdy znajdzie się nad przyciskiem. Jeśli użytkownik przytrzyma mysz, a następnie odsunie mysz przed jej zwolnieniem, wówczas clearInterval nigdy nie zostanie wyrzucony, a więc będzie się zawsze wyrzucał.

Należy dodać kolejne zdarzenie "onmouseout", które również wywołuje clearInterval.

+1

To prawda, ale proszę, utwórz tę odpowiedź, dodając przykładowy kod. –

3
var intervalId; 
$("#button").mousedown(function() { 
    intervalId = setInterval(do_something, 500); 
}).mouseup(function() { 
    clearInterval(intervalId); 
}).mouseleave(function() { 
//this should help solve the problem that occurs when the mouse leaves the button while pressed down 
    clearInterval(intervalId); 
}); 

function do_something() { 
    // whatever 
} 
Powiązane problemy