jQuery DOM事件侦听器失败,为“$“未定义”;
根据建议,我在Ruby on Rails应用程序中有以下内联代码:jQuery DOM事件侦听器失败,为“$“未定义”;,jquery,ruby-on-rails,Jquery,Ruby On Rails,根据建议,我在Ruby on Rails应用程序中有以下内联代码: document.addEventListener("DOMContentLoaded", function(event) { $("select#graph_line_duration").change(function(){ $("form").submit(); }); $("input#graph_duration").hide(); }); 我收到一个错误,$未定义。
document.addEventListener("DOMContentLoaded", function(event) {
$("select#graph_line_duration").change(function(){
$("form").submit();
});
$("input#graph_duration").hide();
});
我收到一个错误,
$未定义
。但是,如果我单击链接进入页面,那么代码工作正常,因此只要有足够的时间,我的jquery
资产就会加载。查看导入的顺序,即:
//= require_self
//= require jquery
//= require jquery_ujs
由于网络延迟,运行jQuery时可能没有加载jQuery 试试这个:
$(document).ready(function() {
document.addEventListener("DOMContentLoaded", function(event) {
$("select#graph_line_duration").change(function(){
$("form").submit();
});
$("input#graph_duration").hide();
});
});
document.addEventListener("load", function(event) { ... })
这将在jQuery完全加载后运行javascript,但必须出现在加载jQuery的
标记之后的HTML文件中。尝试以下操作:
$(document).ready(function() {
document.addEventListener("DOMContentLoaded", function(event) {
$("select#graph_line_duration").change(function(){
$("form").submit();
});
$("input#graph_duration").hide();
});
});
document.addEventListener("load", function(event) { ... })
DOMContentLoaded事件在文档完全加载和解析时触发,而不等待样式表、图像和子帧完成加载(加载事件可用于检测完全加载的页面)
jQuery是在这个内联脚本之前/之上导入的吗?如果不是的话,这就是原因。您是如何加载jQuery的,它是在HTML中比脚本更早加载的吗?我使用RubyonRails资产管道和链轮来加载jQuery。它的加载应该在html之前启动。
$(文档)
上的$
仍将是未定义的:DI已将顺序更改为您所指示的顺序,但这仍然没有帮助。为什么DOMContentLoaded的事件侦听器会启动,即使jQuery尚未加载?此侦听器根本没有启动,因此我的jQuery代码没有执行。在这种情况下,您可以尝试window.addEventListener
根据此链接尝试将console.log()放在document.addEventListener中作为第一条语句,以查看它是否启动。