Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当对象不再可见时显示div_Javascript_Jquery_Visibility_Preloader - Fatal编程技术网

Javascript 当对象不再可见时显示div

Javascript 当对象不再可见时显示div,javascript,jquery,visibility,preloader,Javascript,Jquery,Visibility,Preloader,我有一个关于预加载程序的小问题。我有一个来自第三方的预加载程序,显示了几秒钟(取决于广告)。我可以显示预装,但现在的问题是,我想隐藏另一个div(游戏),直到预装消失 完成预加载后,预加载程序将在对象中获得可见性:隐藏样式。我尝试过这个,但没有成功: <script type="text/javascript"> if($('#preloader').is(':visible')) { $("#game_container").hide(); } </script>

我有一个关于预加载程序的小问题。我有一个来自第三方的预加载程序,显示了几秒钟(取决于广告)。我可以显示预装,但现在的问题是,我想隐藏另一个div(游戏),直到预装消失

完成预加载后,预加载程序将在对象中获得可见性:隐藏样式。我尝试过这个,但没有成功:

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