Воспроизведение/приостановка видео HTML 5 с использованием JQuery

Я пытаюсь контролировать видео HTML5 с помощью JQuery. У меня есть два клипа в интерфейсе с вкладками, всего шесть вкладок, остальные - только изображения. Я пытаюсь сделать видеоролики воспроизводящимися, когда их вкладка нажата, а затем остановится, когда кто-либо из других нажат.

Это должна быть простая вещь, но я не могу заставить ее работать, код, который я использую для воспроизведения видео:

$('#playMovie1').click(function(){
  $('#movie1').play();
      });

Я прочитал, что элемент видео должен быть выставлен в функции, чтобы иметь возможность управлять им, но не может найти пример. Я могу заставить его работать с помощью JS:

document.getElementById('movie1').play();

Любые советы были бы замечательными. Благодаря

Ответ 1

Ваше решение показывает здесь проблему - play не является функцией jQuery, а функцией элемента DOM. Поэтому вам нужно вызвать его на элемент DOM. Вы приводите пример того, как это сделать с помощью собственных функций DOM. Эквивалент jQuery - если вы хотите сделать это с учетом существующего выбора jQuery - будет $('#videoId').get(0).play(). (get получает собственный элемент DOM из выбора jQuery.)

Ответ 2

Вот как мне удалось заставить его работать:

jQuery( document ).ready(function($) {
    $('.myHTMLvideo').click(function() {
        this.paused ? this.play() : this.pause();
    });
});

Все мои теги HTML5 имеют класс 'myHTMLvideo'

Ответ 3

Зачем вам нужно использовать jQuery? Ваше предлагаемое решение работает, и это, вероятно, быстрее, чем создание объекта jQuery.

document.getElementById('videoId').play();

Ответ 4

Для приостановки нескольких видеороликов я обнаружил, что это работает красиво:

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

Это можно поместить в функцию щелчка, которая весьма удобна.

Ответ 5

Вы можете сделать

$('video').trigger('play');
$('video').trigger('pause');

Ответ 6

В качестве расширения ответа lonesomeday вы также можете использовать

$('#playMovie1').click(function(){
    $('#movie1')[0].play();
});

Обратите внимание, что не существует функции get() или eq() jQuery. DOM используется для вызова функции play(). Это ярлык, чтобы иметь в виду.

Ответ 7

Мне нравится этот:

$('video').click(function(){
    this[this.paused ? 'play' : 'pause']();
});

Надеюсь, что это поможет.

Ответ 8

Я использую FancyBox и jQuery для встраивания видео. Дайте ему идентификатор.

Возможно, не BEST-решение могло бы переключать воспроизведение/паузу по-другому - но легко для меня и ИТ-РАБОТ!:)

В

`

<input type="hidden" id="current_video_playing">

<input type="hidden" id="current_video_status" value="playing">

<video id="video-1523" autobuffer="false" src="movie.mp4"></video>

<script>

// Play Pause with spacebar

$(document).keypress(function(e) { 

    theVideo = document.getElementById('current_video_playing').value

    if (e.which == 32) {

        if (document.getElementById('current_video_status').value == 'playing') {

            document.getElementById(theVideo).pause();

            document.getElementById('current_video_status').value = 'paused'

        } else {

            document.getElementById('current_video_status').value = 'playing'

            document.getElementById(theVideo).play();

        }

    }

});

</script>`

Ответ 9

Как примечание, убедитесь, что вы проверяете, поддерживает ли браузер функцию видео, прежде чем пытаться вызвать его:

if($('#movie1')[0].play)
    $('#movie1')[0].play();

Это предотвратит ошибки JavaScript в браузерах, которые не поддерживают тег видео.

Ответ 10

используйте это.. $('#video1').attr({'autoplay':'true'});

Ответ 11

Я также сделал это так:

$(window).scroll(function() {
    if($(window).scrollTop() > 0)
        document.querySelector('#video').pause();
    else
        document.querySelector('#video').play();
});

Ответ 12

@loneSomeday объяснил это красиво, вот одно решение, которое также может дать вам представление о том, как добиться функциональности воспроизведения/паузы

воспроизведение/пауза видео по клику

Ответ 13

С помощью JQuery с использованием селекторов

$("video_selector").trigger('play');  
$("video_selector").trigger('pause');
$("div.video:first").trigger('play');$("div.video:first").trigger('pause');
$("#video_ID").trigger('play');$("#video_ID").trigger('pause');

Используя Javascript с использованием ID

video_ID.play();  video_ID.pause();

ИЛИ

document.getElementById('video_ID').play();  document.getElementById('video_ID').pause();

Ответ 14

<video style="min-width: 100%; min-height: 100%; " id="vid" width="auto" height="auto" controls autoplay="true" loop="loop" preload="auto" muted="muted">
<source src="video/sample.mp4" type="video/mp4">
<source src="video/sample.ogg" type="video/ogg">
</video>
<script> 
$(document).ready(function(){
document.getElementById('vid').play(); });
</script>