Jquery不会在rails中激活document.ready

时间:2014-03-29 21:21:24

标签: javascript jquery ruby-on-rails coffeescript

我不能让jquery为我的生活工作。我有两页我正在处理,都需要javascript。

第一页是我的主页。它有简单的coffeescript来显示文档加载的警报

$(document).ready ->
 alert('ready')

第二页有自己的coffeescript我不会粘贴在这里。

当我加载主页时,这个文件已经开始了。但是,如果我加载第二页,它的代码和此警报就会被触发。

这让我相信,jquery并没有被加载。所以我继续前进并测试了一些事情

  1. Jquery是第一个包含的javascript文件,主页的javascript文件是倒数第二个包含的(最后一个是application.js)。
  2. 第二页的脚本文件包含在主页的脚本文件之前
  3. 删除turbolinks无法修复它。
  4. 所以我决定看看能不能开展任何工作。

    alert 'test'
    $(document).ready ->
     alert('ready')
    

    将开启测试'在主页上提醒。

    此外,如果我在主页的底部包含脚本标记,并且我放入一些jquery以防止表单提交,它可以正常工作。以下是代码:

    <script type="application/javascript">
      $("#formtest").submit(function(e){
      e.preventDefault();
      alert('No submit');
     });
    </script>
    

    然而,

    <script type="application/javascript">
      $(document).ready(function(){
        alert('hello');
      });
    </script>
    

    仍然无法运作。这告诉我DOM加载的事件没有为主页触发。

    修改

    看起来是$(文件).ready - &gt; ...在第二页的javascript中搞砸了这个。那是为什么?

1 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,对我有用的解决方案是让jquery事件以这种方式触发:

$(document).on('page:load', yourFunctionHere)

另一个解决方案是安装以下gem:

gem 'jquery-turbolinks'

使用该gem将允许您使用DOM加载事件来触发所有必需的jquery函数。