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(),删除了别名?
确保在application.html.erb
的yield
之前包含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代码,它将正常工作。