0

我的 assets/javascripts/ 目录中有一个 js 文件。这个文件被 rails 正确拾取(当我检查页面的head标签时,我可以在 firebug 中看到它)

我正在我的application.js中的这个 js 文件中调用一个函数,如下所示:

//
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .

$(window).load(function(){
    Boxlayout.init();
});

我在某处读到init()必须使用函数调用.load函数,以便在加载 DOM 后调用它们。

但是这里的javascript不起作用。

相反,当我明确包含 js 文件时:

<%= javascript_include_tag "file.js" %>  

在页面底部并从 application.js 调用相同的init函数,javascript 工作正常。

我不想明确包含该文件。(想用rails的方式来做)。那么我该如何使用第一种方法呢?

编辑

使用Rails 3.2.14(无 Turbolinks)。

此外,虽然它在本地运行良好,但Javascript 也无法在 Heroku 上运行。

4

3 回答 3

1

尝试改变

$(window).load(function(){

进入

$(document).ready(function(){
于 2013-09-17T14:08:41.613 回答
0

你有 //= require_tree 。在 application.js 中,将尝试在 assets/javascripts/ 目录中创建新文件 *.js,并在此处附加您的代码。

于 2013-09-17T14:10:13.973 回答
0

我认为这是一个涡轮链接问题。

当您单击链接时,Turbolinks 通过 AJAX 交换页面的主体,但保持头部不变。因为 CSS 和 JavaScript 仅在浏览会话开始时才被下载和解析,所以您会获得显着的速度提升。

缺点是不会触发您的 jQuery 加载事件。这解释了为什么当您将脚本嵌入到页面正文中时脚本正在执行,而不是在正确放置在头部时执行。

尝试包括 jQuery turbolinks gem。这将在激活 turbolink 时触发预期的 jQuery 事件。

https://github.com/kossnocorp/jquery.turbolinks

于 2013-09-17T14:16:45.840 回答