Pregunta Evento de "cambio" del deslizador de jQuery: ¿cómo puedo determinar quién lo llamó?


Tengo un control deslizante que se utiliza como una línea de tiempo en mi reproductor de música. El valor mínimo es 0 y el vlaue máximo es la duración de la canción (en segundos). Cada segundo (lo hago con un temporizador), el control deslizante se mueve y el valor se establece en la hora actual. Esta línea de código se ve así:

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

El usuario puede deslizar / hacer clic en el deslizador y saltar a otro punto de la canción, esto es activando la función 'play (startPlayFromHere)'. Se ve así:

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

El problema es que tanto la línea de código en el temporizador como el usuario están llamando al mismo evento de "cambio" del control deslizante, y el usuario no puede mover el control deslizante.

Entonces mi pregunta es ¿cómo puedo determinar si el usuario llamó al evento de cambio o no (eso significa que fue el temporizador)?

Espero que sea lo suficientemente claro, ¡Gracias!


7
2018-04-21 00:14


origen


Respuestas:


Puede determinar si un evento de cambio surgió de forma manual o programática mediante pruebas event.originalEvent en el controlador de cambio.

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

Ver violín.


21
2018-04-21 03:05



Preguntas populares