Railsで画面遷移時にJavascriptが動かない
ナビバーのリンクをクリックしたときになぜか移動した自サイトでjavascript(jquery)が動かなくて困った。
再読み込みすれば動くんだけど、対処方法があったので試してみた。
デフォルトで、turbolinksというものが動いているため、$(document).ready()、や$(window).load が動かないみたい。
そりゃだめだ('Д')
環境
■OS
# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
■Rails
# rails -v
Rails 5.1.6
Rails5では、
$(document).ready()、や$(window).loadじゃなくて、
例えば
$(window).load(function( )});
を
$(document).on('turbolinks:load', function() { });
に変更してあげればいい。
今回は、画面をふわっと出すこのコードを
$('head').append(
'<style type="text/css">body {display:none;}'
);
$(window).load(function() {
$('body').delay(600).fadeIn("slow");
});
ピンクマーク部分を以下に変更した。
$('head').append(
'<style type="text/css">body {display:none;}'
);
$(document).on('turbolinks:load', function() {
$('body').delay(600).fadeIn("slow");
});
変更後、ページ遷移してみても問題なくjavascriptが動作した。
これはひっかかるなあ。。。