我正努力在几个视频中设置一个mouseenter和mouseleave事件。一切看起来都很完美,当我mouseenter时播放视频,mouseleave时停止播放。
然而,当添加多个视频时,只需播放第一个视频。我在努力找出它缺少的东西--我找不到方法去做。
以下是到codepen:https://codepen.io/felixgonzalo/pen/poJoXRW的链接
我的代码是:
<div class="main-wrapper">
<div class="video-container">
<video id="video" class="video" controls class="border" controls="false" muted loop>
<source src="https://www.errorerror.studio/wp-content/uploads/2020/01/ee.st-honesty-clip-00.mp4" preload="auto" type="video/mp4" autoplay />
</video>
<div class="overlay"></div>
</div>
<div class="video-container">
<video id="video-2" class="video" controls class="border" controls="false" muted loop>
<source src="https://www.errorerror.studio/wp-content/uploads/2020/01/ee.st-honesty-clip-00.mp4" preload="auto" type="video/mp4" autoplay />
</video>
<div class="overlay"></div>
</div>
</div>jQuery
$('.video').prop('currentTime', 0)
function Play() {
$('.video').get(0).play();
}
function Stop() {
$('.video').prop('currentTime', 0).get(0).pause();
}
$(document).ready(function(){
$('.video-container').mouseenter(function(){
$('.overlay', this).addClass("hide")
Play();
}).mouseleave(function(){
$('.overlay', this).removeClass("hide")
Stop();
});
});我也试着在JS中做到这一点,但没有成功:
var container = document.querySelector('.video-container');
container.addEventListener('mouseleave', function() {
this.querySelector('.overlay').classList.remove('hide');
Stop();
});
container.addEventListener('mouseenter', function() {
this.querySelector('.overlay').classList.add('hide');
Play()
});真的很感谢你的帮助
发布于 2020-02-07 09:13:26
函数播放只获得第一个视频,因为您指定了0索引。您需要传递正在悬停的当前视频索引以触发播放。编辑:工作代码。我将您的函数设置为参数,设置为触发鼠标事件的元素的第一个视频元素子元素。
$('.video').prop('currentTime', 0)
$(document).ready(function() {
$('.video-container').mouseenter(function() {
$('.overlay', this).addClass("hide")
$(this).children('.video')[0].play();
}).mouseleave(function() {
$('.overlay', this).removeClass("hide")
$($(this).children('.video')[0]).prop('currentTime', 0)
$(this).children('.video')[0].pause();
});
});https://stackoverflow.com/questions/60110276
复制相似问题