jQuery没有在Rails 3.2.8上工作

时间:2012-11-02 11:00:15

标签: jquery ruby-on-rails ruby-on-rails-3

我在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。关于可能发生的事情的任何想法?

4 个答案:

答案 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(),删除了别名?

http://api.jquery.com/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代码,它将正常工作。