3

アプリケーションのホームページの一部のリンクにフェード効果を使用しています。これは、いくつかの JQuery によって実現されています。

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();
    });
});

アプリを初めて起動したとき、これはすべてうまく機能します。ただし、ホームページから移動すると、戻ってきたときに、ページを「更新」するまでフェード効果が機能しなくなります。何か案は?

4

1 に答える 1

5

これはおそらく、Rails 4 の新機能Turbolinksによるものです。Turbolinks は、変更されたページの部分のみを更新することで、クライアントからのサーバー リクエストを減らします。これは、新しいページをロードするときにdocument.ready(または$(document).readyjQuery で) が再度呼び出されないことを意味します。

gem 'turbolinks'解決策の 1 つは、gemfile と application.jsの を削除してターボリンクを無効にすることですが、より簡単な修正方法は、すべてのターボリンク呼び出しで呼び出して問題にパッチを当てるターボリンク スクリプトを含む application.js ファイルをrequire turbolinks追加することです。 .require jquery.turbolinks$(document).ready

詳細については、ターボリンクの readme の jQuery セクションを参照してください。

于 2013-09-01T03:53:13.123 に答える