5

我正在使用 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 %>

这不起作用

<% content_for :javascript do %>

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

这是布局

<!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">
…
4

2 回答 2

2

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

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

还有一种可能是资源加载非常非常缓慢。但是第一种可能性更大。

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

于 2011-05-17T18:14:42.737 回答
1

解决方法怎么样...您是否知道SCRIPT标签末尾的BODY标签是在之前的所有内容都加载到的时候执行的DOM

<body>
  <!-- all your HTML here -->
  <script>
    //your starting Javascript code here
  </script>
</body>
于 2011-05-16T20:42:03.890 回答