jquery - 为什么 $(document).ready() 永远不会触发而 $(window).load() 会触发?

标签 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 函数时,他们被解雇了。其中包括 Accordion 、可拖动元素...

这是我的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 的位置(将其移至样式表上方,移至之前)
  • 我尝试在 $(window).load() 中包含 $(document).ready()

但是 $(document).ready() 仍然没有触发...控制台中没有问题(在 Chrome、Safari、Firefox 上检查)

提出了类似的问题here ,但他从未收到主要问题的答案。

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

最佳答案

对不起,大家,我通过删除一些我编写的蹩脚 JavaScript 解决了这个问题。它应该是一个可以在不支持占位符的浏览器中显示标签的代码。不知何故,一旦我删除了文件,一切就恢复正常工作...奇怪的是,我总是花几个小时尝试解决问题,并且似乎在此处提出问题后立即解决了问题!

关于jquery - 为什么 $(document).ready() 永远不会触发而 $(window).load() 会触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13206916/

相关文章:

javascript - 有没有办法将javascript值传递给 View 中的模型

javascript - 将数组值附加到所选元素的 ID 属性

ruby-on-rails - Rails 3 ActiveRecord where 子句,其中 id 设置或为 null

html - 仅当选中复选框时才提交表单

javascript - 如何将查询字符串中传递的变量访问到 jQuery 的 document.ready 函数中?

javascript - HTML 页面和脚本加载后,AJAX 就绪事件

javascript - jQuery 如何使 div 名称始终为 1,2,3

jquery - 需要 jQuery 上的 slider 同时带有滚动条和箭头

jquery - Backbone.js + KendoUI - 使用网格进行路由、 View 和结构化

javascript - 如何在创建元素后调用 polymer 中的函数(如 jquery 中的就绪函数)