2015-04-06 3 views
2

Использование рельсов 4 и jQuery, но у меня, похоже, есть небольшой конфликт с двумя функциями.Рельсы и 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 . 

ответ

2

Выполните следующие действия для этого драгоценного камня https://github.com/kossnocorp/jquery.turbolinks, но вместо того, чтобы двигаться вниз // = требуют turbolinks просто удалить его полностью.

+0

Прибита гвоздем. Отлично спасибо. – DollarChills

0

Вы должны использовать драгоценный камень jquery-turbolinks.

Добавить gem 'jquery-turbolinks' в ваш Gemfile, затем запустить bundle install.

Затем измените файл application.js

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

Во-первых, установить jquery-turbolinks камень. И затем, не забудьте переместить ваши включенные файлы Javascript из конца вашего тела application.html.erb в его <head>.

Если вы указали ссылку javascript приложения в нижнем колонтитуле для оптимизации скорости, вам нужно будет переместить ее в тег, чтобы она загружалась до содержимого в теге. Это решение сработало для меня.