javascript - jQuery in-viewport 未检测到多个视频
问题描述
我正在使用 jQuery 插件isInViewport
jQuery isInViewport来控制两个视频在单个页面上滚动进出视图后的播放和暂停。
我能够让它工作的唯一方法是使用两个 if 语句明确检查每个视频 ID。
以下作品:
$(window).scroll(function() {
if ( $("video#one").is( ':in-viewport')) {
$("video#one")[0].play();
} else {
$("video#one")[0].pause();
}
if ( $("video#two").is( ':in-viewport')) {
$("video#two")[0].play();
} else {
$("video#two")[0].pause();
}
});
然而,这是低效的。我可能会在路上添加更多视频。每次更改视频时都必须调整 JS 是没有意义的。
这就是我想要的......但是,一旦将视频 1 滚动到视图中,它也会触发第二个视频(不在屏幕上)开始播放。
$(window).scroll(function() {
$("video").each(function() {
if ( $("video").is( ':in-viewport')) {
$("video")[0].play();
} else {
$("video")[0].pause();
}
});
});
无论有多少,如何调整每个功能以在一页上播放和暂停我的视频?
解决方案
问题很可能出在您一遍又一遍地引用所有视频的每个功能中。您应该能够通过使用THIS来解决此问题。
$(window).scroll(function() {
$("video").each(function() {
if ( $(this).is( ':in-viewport')) {
$(this)[0].play();
} else {
$(this)[0].pause();
}
});
});
推荐阅读
- google-cloud-platform - 通过 BackendConfig 添加会话亲和性会导致服务中断 (502)
- postgresql - 了解 auto-vacuum 及其触发时间
- android - Android键盘与自定义应用程序键盘
- python - 使用 azure 打包和调度 python 文件夹
- go - 在 gzip 中使用 golang bufio 时出现意外的 EOF
- html - 如何让 flexbox 中的项目只占用内容宽度?
- javascript - Vanilla JavaScript 轮播转换问题
- javascript - 如何从 google drive 共享视频链接获取 exoplayer 的真实视频 url?
- c# - 正则表达式 c# 字符串
- javascript - 在另一个(功能性)组件(类型)中使用带有 MUI 链接或 MUI 按钮的 Nextjs 链接