2017-09-07 2 views
0

Ich habe einen Click-Handler, um die eingebaute jwplayer().stop(); Funktionalität zu feuern. Allerdings wird nur mein erster Handler ausgeführt und der andere schlägt fehl (es werden jedoch keine Fehler protokolliert).JW Player - Stop (Ziel) Mehrere Spieler mit einem Event Handler

Die Videos sind in das Element divs in der Ansicht eingebettet.

Mit anderen Worten: Ich kann das erste Video stoppen, aber nicht die zweite, dritte und so weiter, obwohl ich in der Lage bin, jeden nachfolgenden Klick in meinem function() zu protokollieren.

Gedanken? Danke.

$(function(){ 
    console.log('ready'); 
    $('.stop').on('click',function stopVideo() { 
     //stop JW player 
     if (typeof(jwplayer) != 'undefined') { 
       console.log('video stopped'); 
       jwplayer().stop(); 

      }   
    }) 
}); 

Ansicht

<body> 
<div class="container"> 
    <!-- first video --> 
    <div class="jw" style="width: 40%; margin: 10px auto"> 
     <script src="//content.jwplatform.com/players/4sng2RGX-UQtQ90mG.js"></script> 
     <button class="stop" style="padding: 8px 19px; float: right; margin: 10px">stop video</button> 
    </div> 

    <!-- second video --> 
    <div class="jw" style="width: 40%; margin: 10px auto"> 
     <script src="//content.jwplatform.com/players/z5Jka98V-UQtQ90mG.js"></script> 
     <button class="stop" style="padding: 8px 19px; float: right; margin: 10px">stop video</button> 
    </div> 
</div> 
</body> 

Antwort

1

Per JW Dokumentation unter Targeting Mehrere Spieler:

keine ID oder einen Index mit Ihrem API-Aufruf mit den ersten Spielern auf einer Seite immer Ziel. https://developer.jwplayer.com/jw-player/docs/developer-guide/api/javascript_api_introduction/

Hier ist eine Lösung:

$(function(){ 
    //get every video with class .stopVideo 
    var count = $('.stopVideo').length; 

    $('#stop').on('click',function() { 
     //loop through all videos stored in count 
     for(var i = 0; i < count; i++) { 
     if (typeof(jwplayer) != 'undefined') { 
       console.log('video stopped'); 
       //stop player 
       jwplayer(i).stop(); 

      } 
     }   
    }) 
}); 

Ansicht

<body> 
<div class="container"> 
    <!-- first video --> 
    <div class="stopVideo"> 
     <script src="//content.jwplatform.com/players/4sng2RGX-UQtQ90mG.js"></script> 
    </div> 

    <!-- second video --> 
    <div class="stopVideo"> 
     <script src="//content.jwplatform.com/players/z5Jka98V-UQtQ90mG.js"></script> 
    </div> 
    <button id="stop">stop video</button> 
</div> 
</body> 

Ich bin damit einverstanden, dass bedauerlich, wenn jemand eine Frage Stimmen nach unten, ohne einen Grund dafür zu geben. Weiter so und Happy Coding!

+0

Vielen Dank @Null ist wahr. Ich schätze die Einsicht sehr. – tonkihonks13

+0

Ja, kein Problem @ tonkihonks13 –

1

Ihre stopVideo() Funktion hat keine Möglichkeit, zu wissen, welches Video ist es stoppen soll. jwplayer ist nur eine globale Variable, die mit der Schaltfläche, auf die Sie klicken, in Beziehung steht oder nicht.

+0

Danke Alex. Hast du einen Vorschlag, wo ich den Stillstand aller Videos über den Click-Handler binden kann? Auch wenn Sie einen anderen Ansatz als jwplayer() verwenden. Stop()? – tonkihonks13

+0

https://developer.jwplayer.com/jw-player/docs/developer-guide/api/javascript_api_introduction/ - Scrollen Sie nach unten, um auf mehrere Spieler zu zielen, und Sie auf den richtigen Weg bringen. –