我在Rails 3.2.8上遇到了jQuery的问题。我已经安装了jquery-rails gem,我的application.js有以下内容:
//= require jquery
//= require jquery_ujs
//= require_tree .
views / layouts / application.html.erb有
<%= javascript_include_tag "application" %>
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。关于可能发生的事情的任何想法?
答案 0 :(得分:2)
修正了它!
在application.html.erb中的,我改变了这两行的顺序:
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
为:
<%= javascript_include_tag "application" %>
<%= stylesheet_link_tag "application", :media => "all" %>
现在它有效!我不太清楚为什么,有人可以解释一下吗?
答案 1 :(得分:1)
您可能希望在正在测试的浏览器中检查控制台。
在jQuery的例子中,$只是jQuery的别名,做了以下工作
jQuery(document).ready(function(){
jQuery("a").click(function(event){
alert("Thanks for visiting!");
});
});
也许您已经在某处调用了jQuery.noConflict(),删除了别名?
答案 2 :(得分:1)
确保您在yield
application.html.erb
之前加入了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.
}
}
答案 3 :(得分:0)
虽然对于答案来说太迟了但仍然会提供,因为我遇到了同样的问题并浪费了2个小时就可以了。删除js文件中的注释,因为它们是ruby注释而不是js注释。如果你删除它们并编写你的js代码,它将正常工作。