为什么$(window).load()工作但不是$(document).ready()?

Cha*_*zak 5 javascript jquery ruby-on-rails document-ready

我正在使用rails 3应用程序,我想使用可排序列表.我正在使用此处显示的方法.我的应用程序使用JQuery,我的应用程序布局中包含一个js文件,用于调用$(document).ready()设置一些可视化内容.这似乎工作正常.

但是,当我尝试$(document).ready()在我的视图模板中调用content_for :javascript以设置可排序列表时,该代码永远不会触发.我的yield :javascript布局文件中有必要的调用,如果我加载页面并查看源代码,一切看起来都很好.但是代码永远不会运行 - 即这个$(document).ready()永不触发的实例.

我刚刚发现,如果我替换$(document).ready(),$(window).load()那么我的js代码运行.

所以我的问题是:为什么会$(document).ready()失败并且$(window).load()有效?

这有效:

<% content_for :javascript do %>

<script>
   $(window).load(function(){
     alert('it works!');
   });
</script>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这不起作用

<% content_for :javascript do %>

<script>
   $(document).ready(function(){
            alert('it works!');
   });
</script>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这是布局

<!DOCTYPE html>
<html>
  <head>
    <title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title>

    <!-- Reset Stylesheet -->
      <%= stylesheet_link_tag "reset" %>
        <!-- Main Stylesheet -->
      <%= stylesheet_link_tag "style" %>
        <!-- Invalid Stylesheet -->
      <%= stylesheet_link_tag "invalid" %>

        <%= javascript_include_tag :defaults, "nested_form", "DD_belatedPNG_0.0.7a", "simpla.jquery.configuration", "facebox", "jquery-ui.min" %>
        <%= yield :javascript %>

    <%= yield(:head) %>
    <%= csrf_meta_tag %>

  </head>
  <body onload="initialize()"><div id="body-wrapper">
…
Run Code Online (Sandbox Code Playgroud)

Dmi*_*ten 2

与注册的主体回调存在冲突onready=。请参阅 jquery 文档。您必须删除<body onload="initialize()">.

http://api.jquery.com/ready/

还有一种可能是资源加载速度非常慢。不过第一种可能性更大。

.ready资源加载时触发。资源可能永远处于等待状态,因为服务器在将资源发送到浏览器时从未关闭套接字。使用 firebug 的网络监控工具来追踪是否是这种情况。