#javascript #html #jquery #video.js
#javascript #HTML #jquery #video.js
Вопрос:
У меня есть список нескольких элементов ( .brand-item
), каждый li
из которых содержит другое видео внутри.
Я пытаюсь воспроизвести видео для каждого, li
но с помощью имеющегося у меня кода, когда я нажимаю внутри каждого, li
открывается звук всех видео, поэтому он воспроизводит их все.
Как я могу переписать свой код, чтобы воспроизводить только видео для каждого li
?
Мой код, который я использую video.js
:
$(".brand-item-info").click(function() {
$(function() {
$('.fullscreen-video video').each(function() {
var player = videojs($(this)[0]);
player.currentTime(0);
player.play();
player.muted(0);
});
});
$(this).next(".fullscreen-video").fadeIn();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script>
<link href="https://vjs.zencdn.net/7.8.4/video-js.css" rel="stylesheet" />
<li class="brand-item">
<a href="javascript:void(0)" class="brand-item-info"></a>
<div class="fullscreen-video">
<video id="my-player<?php echo $counter; ?>" class="video-js vjs-default-skin" preload="none" playsinline loop muted data-setup='{ "controls": true, "autoplay": false, "fill": true, "preload": "auto" }'>
<source type="video/mp4" src="<?php the_field("brand_-_project_vimeo_distribution_link") ?>">
</video>
<a href="javascript:void(0)" class="icon-close icon-close-video"></a>
</div>
</li>
Ответ №1:
Используйте контекстную информацию, иначе $(this)
, чтобы нацеливаться только на .fullscreen-video
элемент, который появляется сразу после нажатия кнопки:
$('.brand-item-info').click(function(){
var $fullscreenVideo = $(this).next('.fullscreen-video');
var video = $fullscreenVideo.find('video')[0];
var player = videojs(video);
player.currentTime(0);
player.play();
player.muted(0);
$fullscreenVideo.fadeIn();
});
Комментарии:
1. Не забудьте ввести
video
значение вvideojs()
функцию вместо$(this)[0]
того, чтобы выбирать элемент привязки.2. Я не знаю, почему, но это только открывает видео, оно его не воспроизводит
3. @z-1881 Я допустил ошибку: код создания проигрывателя должен быть
videojs(video)
🙂
Ответ №2:
Следующий код должен помочь вам :
$(".brand-item-info").click(function (e) {
var fullScreenVideoElement = e.target.nextElementSibling;
var videoElement = fullScreenVideoElement.querySelector("video");
var player = videojs(videoElement);
player.currentTime(0);
player.play();
player.muted(0);
$(fullScreenVideoElement).fadeIn();
});
Я пытаюсь найти нужные элементы из выбранной цели.
Комментарии:
1. Попробуйте использовать либо jQuery, либо ванильные функции JavaScript. Объединение их должно означать, что либо вам не нужен jQuery, либо вы неправильно его используете.
2. Вы правы. Я просто отредактировал код, чтобы он работал для z-1881. Конечно, вам не нужен jQuery, но, как это уже было в исходном вопросе, я повторно использовал некоторые части =)