jQuery没有在Rails 3.2.8上工作

我在Rails 3.2.8上遇到了jQuery的问题。 我已经安装了jquery-rails gem,我的application.js有以下内容:

//= require jquery //= require jquery_ujs //= require_tree . 

views / layouts / application.html.erb有

  

test.js中的一个简单的Javascript测试:

 if (jQuery) { alert('Jquery is loaded') } else { alert ('Jquery is not loaded') } 

给我一个警告,告诉我jQuery确实已加载。

但是,没有jQuery命令可以工作,即使是基本的命令也没有响应:

 $(document).ready(function(){ $("a").click(function(event){ alert("Thanks for visiting!"); }); }); 

我已经尝试了一切 – 甚至通过Google API重新使用jQuery。 关于可能发生的事情的任何想法?

固定它!

在application.html.erb中,我改变了这两行的顺序:

 <%= stylesheet_link_tag "application", :media => "all" %> <%= javascript_include_tag "application" %> 

至:

 <%= javascript_include_tag "application" %> <%= stylesheet_link_tag "application", :media => "all" %> 

现在它有效! 我不太清楚为什么,有人可以解释一下吗?

您可能希望在正在测试的浏览器中检查控制台。

在jQuery的情况下,$只是jQuery的别名,执行以下操作

 jQuery(document).ready(function(){ jQuery("a").click(function(event){ alert("Thanks for visiting!"); }); }); 

也许你已经在某处调用了jQuery.noConflict(),删除了别名?

http://api.jquery.com/jQuery.noConflict/

确保在application.html.erbyield之前包含javascript include标记。 如果您正在使用Bootstrap,我认为默认的application.rb在yield之后加载JS,这使得必须等到jQuery加载后再在视图中运行它。

如果是这种情况,并且您不想在页面上重新定位包含标记,则可以执行以下操作:

 runScript(); function runScript() { if( window.$ ) { // Make sure jquery is loaded // your jquery code here } else { window.setTimeout(runScript, 100); // If not, wait 100 milliseconds and try again. } } 

虽然它的答案为时已晚,但我仍然提供,因为我有同样的问题,浪费了2个小时就可以了。 删除js文件中的注释,因为它们是ruby注释而不是js注释。 如果你删除它们并编写你的js代码,它将正常工作。