jQuery DOM事件监听器失败,“$未定义”

时间:2016-05-16 02:07:10

标签: jquery ruby-on-rails

根据建议here,我在Ruby on Rails应用程序中有以下内联代码:

  document.addEventListener("DOMContentLoaded", function(event) { 
    $("select#graph_line_duration").change(function(){
        $("form").submit();
    });
    $("input#graph_duration").hide();
  });

我收到错误$ is not defined。但是,如果我点击链接转到该页面,那么代码工作正常,因此我的jquery资产正在加载,给定足够的时间。

3 个答案:

答案 0 :(得分:2)

试试这个:

document.addEventListener("load", function(event) { ... })

https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

  

在完全加载和解析文档时触发DOMContentLoaded事件,而不等待样式表,图像和子帧完成加载(加载事件可用于检测完全加载的页面)。

答案 1 :(得分:0)

查看导入的顺序,即:

//= require_self
//= require jquery
//= require jquery_ujs

答案 2 :(得分:0)

由于网络延迟,您运行时可能没有加载jQuery。

试试这个:

$(document).ready(function() {
    document.addEventListener("DOMContentLoaded", function(event) { 
        $("select#graph_line_duration").change(function(){
            $("form").submit();
        });
        $("input#graph_duration").hide();
    });
});

这在jQuery完全加载后运行javascript,但必须在加载jQuery的<script>标记之后出现在HTML文件中。