jQuery slider “change” event: come faccio a determinare chi lo ha chiamato?

Ho uno slider che viene usato come time-line nel mio lettore musicale. Il valore minimo è 0 e il valore massimo è la lunghezza della canzone (in secondi). Ogni secondo (lo faccio con un timer), il cursore si sposta e il valore è impostato sull’ora corrente. Questa linea di codice ha il seguente aspetto:

$("#sliderTime").slider("option", "value", document.sound.controls.currentPosition); 

L’utente è in grado di far scorrere / fare clic sul cursore e passare a un altro punto della canzone, triggersndo la funzione ‘play (startPlayFromHere)’. Sembra che:

 $("#sliderTime").slider({ ... change: function (event, ui) { play(ui.value) }, }); 

Il problema è che sia la riga di codice nel timer che l’utente chiamano lo stesso evento ‘change’ del cursore e l’utente non può spostare il cursore.

Quindi la mia domanda è: come posso determinare se l’utente ha chiamato o meno l’evento di modifica (ciò significa che era il timer)?

Spero sia abbastanza chiaro, grazie!

È ansible determinare se un evento di modifica è stato event.originalEvent manualmente o a livello di event.originalEvent testando event.originalEvent nel gestore modifiche.

 $('#slider').slider({ change: function(event, ui) { if (event.originalEvent) { //manual change play(ui.value); } else { //programmatic change } } }); 

Vedi il violino .