jQuery in-viewport 未检测到多个视频

Posted

技术标签:

【中文标题】jQuery in-viewport 未检测到多个视频【英文标题】:jQuery in-viewport not detecting multiple videos 【发布时间】:2019-07-26 07:01:51 【问题描述】:

我正在使用 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();
     
  );
);

如何调整每个功能以在一页上播放和暂停我的视频,无论有多少?

【问题讨论】:

【参考方案1】:

问题很可能出在您的 each 函数中,您一遍又一遍地引用所有视频。您应该可以改用 THIS 来解决此问题。

$(window).scroll(function() 
  $("video").each(function() 
     if ( $(this).is( ':in-viewport')) 
        $(this)[0].play();
      else 
        $(this)[0].pause();
     
  );
);

【讨论】:

即使$("video").is( ':in-viewport')true,第一个视频不应该只播放$("video")[0].play();吗?

以上是关于jQuery in-viewport 未检测到多个视频的主要内容,如果未能解决你的问题,请参考以下文章

未检测到 vuejs 插件。 ReferenceError: jQuery 没有在 eval 中定义

当使用 json dict 填充数据表时,在 Jquery 中未检测到 Html 类标记

在 iFrame jQuery 中重定向表单提交时未检测到更新的 Src 属性

检测jQuery插件是不是应用于多个元素?

getInstalledRelatedApps() API 未检测到已安装的应用程序

iOS 7 旋转设备未检测到横向屏幕边界