为什么document.ready等待?

时间:2011-10-02 13:22:25

标签: javascript jquery

我知道Document.ready - DONt 等待图片下载。

那么为什么呢?

http://jsbin.com/ehuke4/27/edit#source

每次测试后 - 更改 v = xxx in img SRC

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>    
  <script type="text/javascript">

        $(document).ready(function(){
        alert('0');
         });

    </script>

    </head>
      <body  >
        <img src='http://musically.com/blog/wp-content/uploads/2011/04/Google-Logo.jpg?v=42333'  />

    </body>

    </html>

2 个答案:

答案 0 :(得分:1)

我认为,问题来自JSBin.com

因为,当您在JSFiddle.net上尝试此示例时,它可以正常工作

http://jsfiddle.net/vqte9/

答案 1 :(得分:0)

这与你使用“alert()”的事实有关,我想,尽管我不是百分之百确定原因。如果你改变你的代码:

  <body>
    <div id='x'></div>
    <img ...>
  </body>
  <script>
    $(function() { $('#x').text("hello there"); });
  </script>

你会看到在加载图片之前填写了文字。

编辑 - 我不知道为什么这会有所作为,但当我设置就绪处理程序时,我注意到完全不同的行为:

$(function() { whatever; });

$(document).ready(function() { whatever; });

现在不应该是这样的;据我所知,这两种形式应该完全相同。但是,他们似乎并没有。 Here是一个jsbin示例,它使用第一个表单设置ready处理程序,而here是使用第二个表单的Here。他们对我的表现非常不同。我将不得不检查jQuery源代码来弄清楚它是如何成真的。

{{3}}是解释$(handler)$(document).ready(handler)等效性的jQuery文档。