Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I pause ALL videos (html5) at once?

// now pause all active videos
$('.vid').get(0).pause();
$('.vid').get(1).pause();
$('.vid').get(2).pause();

That's what I have right now, but it's less than ideal. I'm a bit tired, so I could be missing something obvious, but how can I just tell it do pause all instances of .vid class on the page?

like image 370
prismspecs Avatar asked Nov 21 '12 01:11

prismspecs


4 Answers

Try

$('.vid').each(function() {
    $(this).get(0).pause();
});
like image 183
n8wrl Avatar answered Nov 01 '22 17:11

n8wrl


There's no real need for jQuery, the ES6 way (that should work in most modern browsers...)

For all <video> tags:

document.querySelectorAll('video').forEach(vid => vid.pause());

or in your case (looking for the .vid class):

document.querySelectorAll('.vid').forEach(vid => vid.pause());
like image 41
bnjmn Avatar answered Nov 01 '22 18:11

bnjmn


$("video").each(function() {
    $(this).get(0).pause();
});

more general? for all videos!

like image 45
Nicolas Figliozzi Avatar answered Nov 01 '22 18:11

Nicolas Figliozzi


Video.js stores all the players on the page in an Object in V.players so you could do the below.

Video JS 3.x

Normal JS

for( player in window._V_.players ) {
    window._V_.players[player].pause();
}

http://jsfiddle.net/3n1gm4/SNZAS/

jQuery

jQuery.each( window._V_.players, function( i, player ) {
    player.pause();
});

http://jsfiddle.net/3n1gm4/cJ8jx/

Video JS 4.x

Normal JS

for( player in window.vjs.players ) {
    window.vjs.players[player].pause();
}

jQuery

jQuery.each( window.vjs.players, function( i, player ) {
    player.pause();
});
like image 32
b.kelley Avatar answered Nov 01 '22 19:11

b.kelley