正在尝试隐藏文档,直到它';用JavaScript更新了它

正在尝试隐藏文档,直到它';用JavaScript更新了它,javascript,jquery,html,Javascript,Jquery,Html,这是我的ready处理: $(document).ready(function() { $(document).hide(); $('.foo').each(function(elem, i) { $(elem).text('So long and thanks for all the fish'); }); $(document).show(); }}; 我试图做的是完全隐藏文档,直到按照我的条件一切就绪,但是show

这是我的
ready
处理:

$(document).ready(function() {
     $(document).hide();

     $('.foo').each(function(elem, i) {
          $(elem).text('So long and thanks for all the fish');
     });     

     $(document).show();
}};
我试图做的是完全隐藏文档,直到按照我的条件一切就绪,但是
show()
函数似乎没有等待元素迭代

顺便说一句,我尝试将
show()
hide()
更改为
css('display','hide')
css('display','block')
,但是你仍然可以看到,文本在你的眼睛中发生了变化

在调用show()之前,如何确保所有代码都已运行?

您不能
隐藏
文档。相反,尝试隐藏页面上的主容器元素;或者隐藏
正文
,例如
$('body')。hide()
也可以

顺便说一句:
display
属性应该是
none
hide
不是有效值。

您不能
hide()
文档。相反,尝试隐藏页面上的主容器元素;或者隐藏
正文
,例如
$('body')。hide()
也可以


顺便说一句:
display
属性应该是
none
hide
不是有效值。

假设您通过隐藏主体或容器元素来解决此问题。这不管用,原因如下:

在文档加载(大部分)后但在隐藏文档之前会发生什么

没错,尽管您尽了最大努力,文档可能会在这段时间内显示出来

因此,您可以改为使用一个CSS类来隐藏,比如说,
主体
,而无需任何JavaScript干预。例如:

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <style>
        body.hide { display: none; }
    </style>
    <script src="//code.jquery.com/jquery-1.9.1.js"></script>
    <script>
        $(document).ready( function() {
            $('.foo').each(function( i, elem ) {
                $(elem).text( 'So long and thanks for all the fish' );
            });
            $('body').removeClass( 'hide' );
        });
    </script>
</head>
<body class="hide">
    <div class="foo"></div>
</body>
</html>
现在您有了一个非JavaScript回退,但是启用JavaScript后文档仍然会立即隐藏,因为添加了
hide
类的代码


还要注意的是,在
$().each()
回调中,参数被颠倒了。(非常有趣的是,您使用的顺序更有意义,实际上是较新的本机
.forEach()
函数使用的顺序。
$()中的顺序。each()
实际上是向后的-在当时看起来是个好主意,但实际上只是一个错误。)

假设您通过隐藏主体或容器元素来解决此问题。这不管用,原因如下:

在文档加载(大部分)后但在隐藏文档之前会发生什么

没错,尽管您尽了最大努力,文档可能会在这段时间内显示出来

因此,您可以改为使用一个CSS类来隐藏,比如说,
主体
,而无需任何JavaScript干预。例如:

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <style>
        body.hide { display: none; }
    </style>
    <script src="//code.jquery.com/jquery-1.9.1.js"></script>
    <script>
        $(document).ready( function() {
            $('.foo').each(function( i, elem ) {
                $(elem).text( 'So long and thanks for all the fish' );
            });
            $('body').removeClass( 'hide' );
        });
    </script>
</head>
<body class="hide">
    <div class="foo"></div>
</body>
</html>
现在您有了一个非JavaScript回退,但是启用JavaScript后文档仍然会立即隐藏,因为添加了
hide
类的代码


还要注意的是,在
$().each()
回调中,参数被颠倒了。(非常有趣的是,您使用的顺序更有意义,实际上是较新的本机
.forEach()
函数使用的顺序。
$()中的顺序。每个()
都是向后的-在当时看起来是个好主意,但实际上只是一个错误。)

您可能应该做类似
$(“body”).hide()
,我认为您不能在
文档
这样的实体上设置css属性。它应该是css('display','none');而不是'hide'@Mash-这是一个输入错误。您right@ewein-当没有异步代码时,您不需要回调。您可能应该执行类似于
$(“body”).hide()的操作
,我认为你不能在像
文档这样的实体上设置css属性。它应该是css('display','none');而不是'hide'@Mash-这是一个输入错误。你知道吗right@ewein-当没有异步代码时,不需要回调。