Html5-video от кнопки $(...). play не является функцией
Я пытаюсь воспроизводить видео один за другим с помощью кнопки или автоматически в конце видео.
по этому коду:
//automatically play
$("#videoPlayer").bind('ended', function() {
if(cnt <= 10 && bNum == 0) cnt++;
$('#videoPlayer').attr('poster','./media/spot'+cnt+'.jpg').html('<source src="./media/spot'+cnt+'.mp4" type="video/mp4"><source src="./media/spot'+cnt+'.ogg" type="video/ogg"><source src="./media/spot'+cnt+'.webm" type="video/webm">');
$('#video-title').html('Spot '+cnt);
if(cnt < 10) {
this.load();
this.play();
cnt++;
}
bNum = 1;
if(cnt >= 10) $('.link1').remove();
});
//Play by the button
$('.link1').on('click', function() {
if(cnt < 10 && bNum == 0) cnt++;
$(this).attr('rel', cnt).attr('title', 'Spot '+cnt);
$('#videoPlayer').attr('poster','./media/spot'+cnt+'.jpg').html('<source src="./media/spot'+cnt+'.mp4" type="video/mp4"><source src="./media/spot'+cnt+'.ogg" type="video/ogg"><source src="./media/spot'+cnt+'.webm" type="video/webm">');
$('#video-title').html('Spot '+cnt);
if(cnt >= 10) $('.link1').remove();
if(cnt <= 10) {
if($('#videoPlayer').load()) $('#videoPlayer').play();
cnt++;
}
});
часть html:
<video width="640" id="videoPlayer" autoplay preload="metadata" poster="./media/spot1.jpg">
<source src="./media/spot1.ogg" type="video/ogg">
<source src="./media/spot1.mp4" type="video/mp4">
<source src="./media/spot1.webm" type="video/webm">
Your browser does not support the video tag.
</video></div>
<ul>
<li class="link1" rel="2">Nächster Spot </li>
</ul>
</div>
автоматическая часть работает без ошибок. Но часть кнопки получает ошибку на линии;
$('#videoPlayer').play();
с сообщением
"$(...).play is not a function".
Я не могу найти почему. (Для this.play()
я могу написать $('videoPlayer')
в автоматической части. Это то же самое.)
Ответы
Ответ 1
$('#videoPlayer')
предоставляет объект jQuery, а объект jQuery не имеет метода play
. Метод воспроизведения, который вы ищете, находится в собственном элементе dom внутри объекта jQuery. Чтобы получить доступ к элементу внутри, просто используйте синтаксис массива или .get()
. например $('#videoPlayer')[0].play();
или $('#videoPlayer').get(0).play();