2017-09-07 10 views
0

J'ai un gestionnaire de clic pour déclencher la fonctionnalité intégrée jwplayer().stop();. Cependant, seul mon premier gestionnaire s'exécute et l'autre échoue (mais aucune erreur n'est consignée).Joueur JW - Arrête (cible) plusieurs joueurs avec un gestionnaire d'événements

Les vidéos sont intégrées dans l'élément divs de la vue. En d'autres termes: je peux arrêter la première vidéo mais pas la deuxième, troisième et ainsi de suite même si je suis capable de se connecter chaque clic suivant à l'intérieur de mon function().

Pensées? Merci.

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

      }   
    }) 
}); 

vue

<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> 

Répondre

1

par la documentation JW sous Targeting joueurs multiples:

Non compris un ID ou de l'indice avec votre appel API sera toujours cibler le premier joueur sur une page. https://developer.jwplayer.com/jw-player/docs/developer-guide/api/javascript_api_introduction/

Voici une solution:

$(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(); 

      } 
     }   
    }) 
}); 

vue

<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> 

Je suis d'accord que ce malheureux quand quelqu'un vote contre une question sans donner une raison à cela. Continuez et codage heureux!

+0

Merci beaucoup @Null est Vrai. J'apprécie vraiment la perspicacité. – tonkihonks13

+0

Ouais pas de prob @ tonkihonks13 –

1

Votre fonction stopVideo() n'a aucun moyen de savoir quelle vidéo est-il censé arrêter. jwplayer est juste une variable globale qui peut ou peut ne pas être liée au bouton sur lequel vous cliquez.

+0

Merci Alex. Avez-vous une suggestion où je peux lier l'arrêt de toutes les vidéos via le gestionnaire de clic? Même si vous utilisez une approche différente de jwplayer(). Stop()? – tonkihonks13

+0

https://developer.jwplayer.com/jw-player/docs/developer-guide/api/javascript_api_introduction/ - faites défiler jusqu'à «cibler plusieurs joueurs», devrait vous mettre sur la bonne voie. –