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

按照这里的建议,我在Ruby on Rails应用程序中有以下内联代码:

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

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

试试这个:

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

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

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

查看导入的顺序,即:

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

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

试试这个:

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

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