Rails和jQuery有时不工作

时间:2015-04-06 04:20:08

标签: javascript jquery ruby-on-rails ruby-on-rails-4

使用rails 4和jQuery,但我似乎与两个函数有轻微的冲突。

第一个功能是滚动到顶部功能。

$(window).scroll(function(){
    if ($(this).offset().top > 600) {
        $('.scrollToTop').fadeIn(500);
    } else {
        $('.scrollToTop').fadeOut(500);
    }
});

//Click event to scroll to top
$('.scrollToTop').click(function(){
    $('html, body').animate({scrollTop : 0},800);
    return false;
});

另一个是嵌套属性(RailsCast Tutorial)函数。

$(function() {
      $("form").on("click", ".remove_fields", function(event) {
        $(this).prev("input[type=hidden]").val("1");
        $(this).closest("fieldset").hide();
        return event.preventDefault();
      });
      return $("form").on("click", ".add_fields", function(event) {
        var regexp, time;
        regexp = void 0;
        time = void 0;
        time = new Date().getTime();
        regexp = new RegExp($(this).data("id"), "g");
        $(this).before($(this).data("fields").replace(regexp, time));
        return event.preventDefault();
      });
    });

现在一个有效,而另一个无效,我不确定问题是什么。如果我剪切并重新粘贴嵌套属性jQuery它可以工作,但如果我单击滚动它不起作用。

我是jQuery的新手,所以我不确定是否会有各种冲突。

的application.js

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

3 个答案:

答案 0 :(得分:2)

按照此宝石https://github.com/kossnocorp/jquery.turbolinks的步骤操作,但不要向下移动// =需要turbolinks,只需将其完全删除。

答案 1 :(得分:0)

您应该使用jquery-turbolinks gem。

gem 'jquery-turbolinks'添加到您的Gemfile,然后运行bundle install

然后修改您的application.js文件

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//
// ... your other scripts here ...
//
//= require turbolinks

答案 2 :(得分:0)

首先,安装jquery-turbolinks gem。然后,不要忘记将已包含的Javascript文件从application.html.erb的正文移动到其<head>

如果您已将应用程序javascript链接放在页脚中以实现速度优化,则需要将其移动到标记中,以便在标记中的内容之前加载。这个解决方案对我有用。