Rails で jQuery の ready イベントを使用すると、奇妙なことに気付きます。<head>
スクリプト タグ内に直接、または を使用して含まれるアセット パイプライン ファイルにハンドラーがセクションに追加された場合、ハンドラーは<%= javascript_include_tag ...
最初のページ リクエストでのみ実行され、後続のリクエストでは実行されません。つまり、ページをロード/更新するための明示的なブラウザー アクションはそれを実行しますが、リンクをクリックすることによってトリガーされる新しいページ ビューは実行しません。
一方、に含まれている<body>
場合は、期待どおりに、すべてのページ ビューで毎回起動します。
<head>
<script>
jQuery(document).ready(function(){
console.log('READY in head'); // Fires on first page load only
});
</script>
</head>
<body>
<script>
jQuery(document).ready(function(){
console.log('READY in body'); // Fires every time
});
</script>
</body>
本当に混乱しています。すべての Rails アプリで見られますが、jQuery はクライアント側のテクノロジであるため、Rails がこれにどのように影響するかわかりません??