2013-09-01 3 views
3

Я использую эффект затухания на некоторых ссылках на домашней странице моих приложений. Это достигается с помощью какой-то JQuery:Приложение JS in Rails загружается только в первый раз

JavaScripts/pages.js

$(document).ready(function() { 
    $('.home_tile_text').hide().removeClass('text').addClass('text-js'); 
    $('.home_tile_overlay').hide().removeClass('overlay').addClass('overlay-js'); 

    $('.home_tile').mouseenter(function(){ 
     $(this).find('.text-js').finish().hide().fadeIn(); 
     $(this).find('.overlay-js').finish().hide().fadeIn(); 
    }); 
    $('.home_tile').mouseleave(function(){ 
     $(this).find('.text-js').finish().show().fadeOut(); 
     $(this).find('.overlay-js').finish().show().fadeOut(); 
    }); 
}); 

Это все прекрасно работает, когда я запустить приложение в первый раз. Однако, если я перехожу от домашней страницы, когда я вернусь, эффект затухания больше не работает, пока я не «обновляю» страницу. Есть идеи?

ответ

5

Возможно, это связано с новой функцией Rails 4 Turbolinks. Turbolinks уменьшает запросы сервера от клиента, только обновляя измененные части страницы. Это означает, что document.ready (или $(document).ready в jQuery) не вызывается снова при загрузке новых страниц.

Одно решения является просто удалить gem 'turbolinks' в вашем Gemfile и require turbolinks в вашем application.js, тем самым отключив turbolinks, но проще исправить это просто добавить require jquery.turbolinks в файле application.js, который включает в себя сценарий turbolinks, что патчи по вызову $(document).ready на каждом вызове с турбонасосом.

Для получения дополнительной информации см. jQuery section in the turbolinks readme.

+1

Работал как очарование. Благодаря! – drewwyatt

Смежные вопросы