为什么$(document).ready()从不会触发但是$(window).load()会?

时间:2012-11-03 07:09:58

标签: jquery ruby-on-rails-3 document-ready

我正在使用Rails 3.2.8并运行jQuery v1.8.2。

以下作品:

$(window).load(function(){
alert('window load is working');
});

但这不起作用:

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

事实上,每当我为$(document).ready()切换$(window).load()我正在测试的任何和所有jQuery函数时,都会被触发。这些包括手风琴,可拖动元素......

以下是我的 application.html.erb 文件:

<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag    "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body background="<%= image_path(random_bg) %>">
<%= render 'layouts/header' %>

<div id="container">

<% flash.each do |key, value| %>
      <div class="alert alert-<%= key %>"><%= value %></div>
<% end %>

<%= yield %>
</div>
 <%= render 'layouts/footer' %>
</body>
</html>

生成的HTML ......

<html>
<head>
<title>Derp</title>
*bunch of css files*
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/collections.js?body=1" type="text/javascript"></script>
<script src="/assets/global.js?body=1" type="text/javascript"></script>
<script src="/assets/derp.js?body=1" type="text/javascript"></script>
<script src="/assets/sessions.js?body=1" type="text/javascript"></script>
<script src="/assets/static_pages.js?body=1" type="text/javascript"></script>
<script src="/assets/test.js?body=1" type="text/javascript"></script>
<script src="/assets/users.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
....

我还扔掉了stackoverflow,神经搜索网络,并尝试了我能找到的所有解决方案:

  • 我尝试过禁用本地jQuery并使用Google来托管jQuery
  • 我尝试过使用javascript_include_tag的位置(将其移到样式表上方,之前移动它)
  • 我尝试在$(document).ready()
  • 中加入$(window).load()

但是$(document).ready()仍然无法触发......控制台没有问题(在Chrome,Safari,Firefox上查看)

有一个类似的问题被问到here,但他从未收到过他主要问题的答案。

为什么jQuery仅在我用$(document).ready()替换$(window).load()时才有效?

1 个答案:

答案 0 :(得分:0)

对不起伙计们,我通过删除一些我写的糟糕的javascript解决了这个问题。它应该是一个代码,可以在浏览器中显示不支持占位符的标签。不知怎的,一旦我删除了文件,一切都恢复正常工作...奇怪的是我总是花费数小时试图解决问题,似乎在这里提出问题之后解决了这些问题!