2017-12-01 6 views
2

Ich habe die folgende Code-Setup, um sowohl 'ändern' und 'Eingabe' Event Listener auf meiner Variablen Suchleiste zu verwenden. Wie Sie sehen können, handelt es sich um exakte Duplikate. Daher frage ich mich, wie Sie die 2 Event-Listener in eine einzige Funktion zusammenführen können.Mehrere Ereignislistener?

// Event listener for the seek bar 
seekBar.addEventListener("change", function() { 
    // Calculate the new time 
    var time = video.duration * (seekBar.value/100); 

    // Update the video time 
    video.currentTime = time; 
}); 

// Event listener for the seek bar 
seekBar.addEventListener("input", function() { 
    // Calculate the new time 
    var time = video.duration * (seekBar.value/100); 

    // Update the video time 
    video.currentTime = time; 
}); 
+0

Mögliche Duplikat [Bindung mehrerer Ereignisse an gleiche Funktion] (https://stackoverflow.com/questions/17425311/bind-multiple-events-to-same-function) –

Antwort

3

Definieren Sie die Callback-Funktion als eine benannte Funktion und geben Referenz statt Vervielfältigen.

function seek() { 
    var time = video.duration * (seekBar.value/100); 
    video.currentTime = time; 
} 

seekBar.addEventListener("change", seek); 
seekBar.addEventListener("input", seek); 

Oder etwas Ähnliches:

['change', 'input'].forEach(function(event){ 
    seekBar.addEventListener(event, seek); 
}); 

In jQuery können Sie on() Methode verwenden, mit Platz mehrere Ereignisse getrennt.

$(seekBar).on('input change', function() { 
    var time = video.duration * (seekBar.value/100); 
    video.currentTime = time; 
}) 
Verwandte Themen