2011-02-05 4 views
3

Je joue avec MediaElement.js depuis longtemps et j'ai une nouvelle application qui utilise 20 joueurs sur une seule page. J'aimerais pouvoir arrêter les chansons quand une autre est jouée - et ne pas chevaucher les pistes quand elles sont en train de jouer. Je n'arrive pas à trouver un moyen facile de pirater cela - peut-être que quelqu'un connaît un moyen?MediaElement.js arrête tous les joueurs

Merci.

Répondre

5

En jQuery, vous pouvez faire

$('video,audio').each(function() { 
     $(this)[0].pause(); 
}); 

Laissez-moi savoir si cela fonctionne.

+0

Non. Ne fonctionne pas Froncer les sourcils. –

+0

John cela ne fonctionnait pas, mais la console semble trouver tous les éléments (il crache une liste d'éléments). Il ne jette pas non plus une erreur ... ce qui est un bon signe. Mais les joueurs ne s'arrêtent pas! – David

+2

J'ai été capable de faire une pause en supprimant la référence du lecteur: $ (this) [0] .pause(); – starpause

3

Un rapide et sale un;)

$(".mejs-play").live('click',function(){ 
    $(".mejs-pause").trigger('click');        
}); 
3

MediaElement.js crée un objet global 'MEJS' qui a l'attribut 'joueurs' qui contient des informations sur tous les joueurs You`ve été créés. Les joueurs sont nommés mep_0, mep_1 etc.

Si vous utilisez underscore/lodash vous pouvez écrire quelque chose comme

_.each(mejs.players, function(player) { 
    player.media.stop(); 
}); 

Si vous avez besoin du code de pur vous pouvez utiliser 'pour' opérateur

for (var player in mejs.players) { 
    mejs.players[player].media.stop(); 
} 
3

le plus facile que je trouve avec jQuery:

$('video,audio').trigger('pause'); 

One-liner pour la victoire! Il évite également JS erreurs car il ne cible pas directement les éléments, merci jQuery.

+0

simple et efficace –

Questions connexes