【问题标题】:jQuery not working on Rails 3.2.8jQuery 不适用于 Rails 3.2.8
【发布时间】:2012-11-02 11:00:14
【问题描述】:

我在使用 jQuery on Rails 3.2.8 时遇到问题。我已经安装了 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。对可能发生的事情有任何想法吗?

【问题讨论】:

  • 控制台有js错误吗?
  • 控制台中是否显示错误????
  • 不,控制台中没有 js 错误
  • 浏览器的网络控制台是否有错误可能是小问题
  • 浏览器是否启用了javascript?

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


【解决方案1】:

修好了!

在 application.html.erb 中,我将这两行的顺序从:

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

到:

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

现在可以了!不过我不太清楚为什么,谁能解释一下?

【讨论】:

  • 我也有同样的问题。我试图交换这些,但是没有用。
【解决方案2】:

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

在 jQuery 的情况下,$ 只是 jQuery 的别名,做以下工作

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

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

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

【讨论】:

    【解决方案3】:

    确保在 application.html.erb 中的 yield 之前包含 javascript 包含标记。如果您使用的是 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.
        }
    }
    

    【讨论】:

      【解决方案4】:

      虽然答案为时已晚,但我仍然会提供,因为我遇到了同样的问题并且浪费了 2 个小时。删除 js 文件中的 cmets,因为它们是 ruby​​ cmets 而不是 js cmets。如果您删除它们并编写您的 js 代码,它会正常工作。

      【讨论】:

        猜你喜欢
        • 2012-08-09
        • 2012-09-28
        • 1970-01-01
        • 2018-06-07
        • 1970-01-01
        • 2016-10-10
        • 2014-02-26
        • 1970-01-01
        • 2012-05-21
        相关资源
        最近更新 更多