Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery DOM事件侦听器失败,为“$“未定义”;_Jquery_Ruby On Rails - Fatal编程技术网

jQuery DOM事件侦听器失败,为“$“未定义”;

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(); }); 我收到一个错误,$未定义。

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

  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中作为第一条语句,以查看它是否启动。