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

时间:2012-01-03 14:03:04

标签: javascript jquery html5 hidden visible

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

我想停止实际上对用户不可见的视频,任何想法如何实现?

我尝试做类似的事情,但我猜有“每个”缺失,并且它总是在点击之后一直工作(好吧,实际上它不起作用因为“这个”在这里使用错误我想,但是你明白了,对不起,我根本不是一个JS人:():

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

2 个答案:

答案 0 :(得分:3)

你可能想看看这个:

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();
  }
});

答案 1 :(得分:1)

我认为您希望使用setInterval()。类似的东西:

var videoInterval = setInterval(function() {
  // video check logic here
}, 1000);

以上代码将每秒(1000毫秒)运行您的视频检查。您也可以使用$(代替jQuery(。如果您因任何原因需要停止检查的“循环”,videoInterval变量将允许您使用clearInterval()。我相信此代码需要位于$(document).ready(function() {...})块内。