Javascript 当对象不再可见时显示div
我有一个关于预加载程序的小问题。我有一个来自第三方的预加载程序,显示了几秒钟(取决于广告)。我可以显示预装,但现在的问题是,我想隐藏另一个div(游戏),直到预装消失 完成预加载后,预加载程序将在对象中获得可见性:隐藏样式。我尝试过这个,但没有成功:Javascript 当对象不再可见时显示div,javascript,jquery,visibility,preloader,Javascript,Jquery,Visibility,Preloader,我有一个关于预加载程序的小问题。我有一个来自第三方的预加载程序,显示了几秒钟(取决于广告)。我可以显示预装,但现在的问题是,我想隐藏另一个div(游戏),直到预装消失 完成预加载后,预加载程序将在对象中获得可见性:隐藏样式。我尝试过这个,但没有成功: <script type="text/javascript"> if($('#preloader').is(':visible')) { $("#game_container").hide(); } </script>
<script type="text/javascript">
if($('#preloader').is(':visible')) {
$("#game_container").hide();
}
</script>
如果($('#preload')。是(':visible')){
$(“#游戏容器”).hide();
}
提前感谢。您需要附加一个事件侦听器来侦听show/hide上的
,我最近也遇到了这种问题。以下是我写的解决方案:
$(document).ready(function(){
$("#preloader").on({
"show": function(){
$("#game_container").hide();
},
"hide": function(){
// Do something
}
});
});
// Custom event handler for hide and show
(function ($) {
$.each(['show', 'hide'], function (i, ev) {
var el = $.fn[ev];
$.fn[ev] = function () {
this.trigger(ev);
return el.apply(this, arguments);
};
});
})(jQuery);
一旦您将自己的自定义事件处理程序附加到
函数上的,它将侦听隐藏和显示事件,然后您可以根据需要在元素上使用这些事件
我希望这有帮助 我创建了一个快捷方式,可以满足您的需求:
HTML:
JS:
我设置了一个间隔来检查预加载程序div是否隐藏。如果是,则显示game\u容器
我有一个人工超时,在3000秒后隐藏预加载程序div。这实际上不是解决方案的一部分,它只是复制了被隐藏的预加载程序。您找到了问题的解决方案还是还有其他问题?它似乎不起作用。澄清我的问题。预加载计时器由第三方设置。预加载程序自动显示并在几秒钟后消失(然后将对象设置为可见性:隐藏)。您无法控制第三方计时器。所以你的意思是当物体可见时捕捉它并用它做些事情。您可以尝试执行一项测试,当#preload
可见时,该测试将输出到控制台“preload visible”。让我知道会发生什么
<div id="preloader">
PreLoader
</div>
<div id="game_container">
My Game
</div>
#preloader { display:block; position:absolute; width:200px; height:200px; background:blue;; color:#fff; font-size:2em; }
#game_container { display:none; width:200px; height:200px; background:red; color:#fff; font-size:2em; }
var checkPreloaderInterval = setInterval(showGameContainerIfPreloaderHidden, 200);
function showGameContainerIfPreloaderHidden()
{
if($('#preloader').is(':hidden')) {
$("#game_container").fadeIn();
clearInterval(checkPreloaderInterval);
}
}
setTimeout(function(){$('#preloader').fadeOut()}, 3000);