jQuery如何不断检查元素是否隐藏/可见

jQuery how to constantly check if element is hidden/visible?

本文关键字:隐藏 可见 是否 元素 何不断 检查 jQuery      更新时间:2023-09-26

我的网站上有几个HTML5视频(在滑块内),它们每隔x秒自动循环一次(或当用户点击"下一张幻灯片"时)。

我想停止用户看不见的视频,有什么办法吗?

我试图做这样的事情,但我猜有"each"缺失,它在点击后一直工作(好吧,事实上它不起作用,因为"this"在这里用错了,我猜,但你明白了,对不起,我不是一个js家伙:():

document.on('click', ".videojs:hidden", function(){
   alert('video hidden!');    
   jQuery(this).player.pause();
});

你可能想看看这个:

http://www.west-wind.com/weblog/posts/2008/Sep/12/jQuery-CSS-Property-Monitoring-Plugin-updated

你可以这样做:

jQuery(".videojs").watch("display,visibility", function() { 
  if(!jQuery(".videojs").is(':visible'))
  {
    alert('video hidden!');    
    jQuery(".videojs").player.pause();
  }
});

我认为你想看看使用setInterval()。比如:

var videoInterval = setInterval(function() {
  // video check logic here
}, 1000);
上面的代码将每秒钟(1000毫秒)运行一次视频检查。你也可以用$(代替jQuery(。如果出于任何原因需要停止检查的"循环",videoInterval变量将允许您使用clearInterval()。我相信这段代码将需要在您的$(document).ready(function() {...})块内。