首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery mouseleave - mouseenter只在第一个元素中工作

jQuery mouseleave - mouseenter只在第一个元素中工作
EN

Stack Overflow用户
提问于 2020-02-07 09:07:53
回答 1查看 73关注 0票数 0

我正努力在几个视频中设置一个mouseentermouseleave事件。一切看起来都很完美,当我mouseenter时播放视频,mouseleave时停止播放。

然而,当添加多个视频时,只需播放第一个视频。我在努力找出它缺少的东西--我找不到方法去做。

以下是到codepen:https://codepen.io/felixgonzalo/pen/poJoXRW的链接

我的代码是:

代码语言:javascript
复制
<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

代码语言:javascript
复制
$('.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中做到这一点,但没有成功:

代码语言:javascript
复制
        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()
        });

真的很感谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-07 09:13:26

函数播放只获得第一个视频,因为您指定了0索引。您需要传递正在悬停的当前视频索引以触发播放。编辑:工作代码。我将您的函数设置为参数,设置为触发鼠标事件的元素的第一个视频元素子元素。

代码语言:javascript
复制
$('.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();
    });
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60110276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档