У меня есть три HTML5-видео на одной странице, и я хочу приостановить / отключить все видео, кроме того, которое я выбрал.Кажется, это работает нормально, когда я нацеливаю свой родительский div на прослушиватель событий при щелчке, однако мне нужно, чтобы он работал и тогда, когда я нацеливался на элементы управления видео.
Однако, когда я начинаю тестировать прослушиватели событий на медиа-событиях html5такие как «пауза» или «играть».Я не могу слушать, как применить "video.play ()" к событиям без прерывания.
var M = M || {};
var $allVideos = $('video');
M.playVideo = function($target) {
var $video = $target.children('video');
var $previewImage = $target.children('img.previewImage');
$allVideos.map(function(index, element, something){
element.pause();
element.muted = true;
});
if($video[0].paused){
$previewImage.css('display', 'none');
$video[0].muted = false;
$video[0].play();
} else {
$video[0].pause();
}
}
$('.parallax-box').on('click', function (e) {
e.preventDefault();
M.playVideo($(this));
});
$('video').on('play', function(e) {
//pause all videos initially
$allVideos.map(function(index, element, something){
element.pause();
});
//if the target video is paused, play it
if($(this)[0].paused){
$(this)[0].play(); // play() just keeps running breaking the browser
}
}
<a id="video1" class="video-box" target="_blank" href="#" title="video">
<video id="vid1" preload="metadata" loop controls>
<source src="vid1.mp4"/>
</video>
<img class="previewImage" src="image1.jpg" />
</a>
<a id="video2" class="video-box" target="_blank" href="#" title="video">
<video id="vid2" preload="metadata" loop controls>
<source src="vid2.mp4"/>
</video>
<img class="previewImage" src="image2.jpg" />
</a>
<a id="video3" class="video-box" target="_blank" href="#" title="video">
<video id="vid3" preload="metadata" loop controls>
<source src="vid3.mp4"/>
</video>
<img class="previewImage" src="image3.jpg" />
</a>