如何使用带有 ID 的单独播放按钮播放多个 HTML5 视频

Posted

技术标签:

【中文标题】如何使用带有 ID 的单独播放按钮播放多个 HTML5 视频【英文标题】:How to play multiple HTML5 videos using individual play buttons with an ID 【发布时间】:2022-01-23 06:09:24 【问题描述】:

我有一个带有播放按钮的 html5 视频列表。

每个播放按钮都有一个唯一的标识符(作为类名),然后每个视频都有一个匹配的类名,这样我就可以为特定的视频分配一个特定的按钮进行播放。

HTML

<figure class="hover-scale rounded mb-0 ratio ratio-1x1">
    <a class="thumbnail-wrapper" href=".........">
        <video class="3c4c0f2d-6324-48c3-b32b-08d9c0b035e0 loaded" data-src="......." data-was-processed="true" loop="" preload="metadata" src="........" >
            <source src=".........." type="video/mp4">
        </video>
    </a>
    <p>
        <i class="uil uil-play text-white fs-20 video-play-button 3c4c0f2d-6324-48c3-b32b-08d9c0b035e0"></i>
    </p>
</figure>

Javascript

var videoPlayBackBtn = document.getElementsByClassName('video-play-button');
for (let item of videoPlayBackBtn) 
    console.log(item.id);
    item.addEventListener('click', function()
        console.log(this);
    )

通过上面的 JS,我能够获取用于视频的标识符,并且我希望简单地以匹配的标识符作为播放按钮播放视频,并暂停任何其他不匹配的视频。在这种情况下如何定位特定视频?

【问题讨论】:

【参考方案1】:

虽然可以剖析 i 元素的 class 字符串以找到与该 GUID 匹配的 video 并将其设置为播放,但这将是实现目标的一种非常脆弱的方法,并且会导致一些非常丑陋和不必要的代码。

实现目标的更简单方法是遍历 DOM 以找到与 i 相关的 video。正如您用“jQuery”标记的问题,这里是一个处理程序的实现,用于您的 HTML 中此结构的所有实例:

const $videos = $('figure video');

$('.video-play-button').on('click', e => 
  let $video = $(e.target).closest('figure').find('video');
  $videos.not($video).each((i, v) => v.pause());
  $video[0].play();
);

【讨论】:

以上是关于如何使用带有 ID 的单独播放按钮播放多个 HTML5 视频的主要内容,如果未能解决你的问题,请参考以下文章

带有播放/暂停按钮的多个引导轮播

jQuery - 切换播放/暂停按钮(多个音频)

html5 视频中的单独播放/暂停按钮

使用 React JS 从 Spotify API 调用多个播放列表

如何一键暂停/播放多个 MediaPlayer 对象?

如何停止从另一个 ViewModel 按钮播放音频