ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery の `$(document).ready()` を Rails 4 の Turbo Links で動作させるにはどうすればよいですか?

jQuery の `$(document).ready()` を Rails 4 の Turbo Links で動作させるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-21 02:51:13276ブラウズ

How to Make jQuery's `$(document).ready()` Work with Rails 4's Turbo Links?

Rails 4: Turbo-Links 統合による jQuery の '$(document).ready()' の利用

Rails 4 での作業中アプリケーションでは、開発者は JavaScript ファイルを効果的に整理する必要に遭遇することがよくあります。従来、JavaScript コードはさまざまなビューに分散していました。ただし、より組織化されたアプローチには、それらを個別のファイルにコンパイルし、アセット パイプラインを利用することが含まれます。

ただし、Turbo-Links が有効になっている場合、jQuery の「ready」イベントは制限に遭遇します。後続のクリック中に、「準備完了」イベントの発生が停止し、そのスコープ内のコードの実行に影響します。この問題は、Turbo-Links が有効になっているとページがリロードされないために発生します。

これを解決するには、Turbo-Links がアクティブなままである間、jQuery イベントが問題なく機能することを確認することが重要です。 2 つのアプローチが考えられます。

アプローチ 1: Rails 固有のリスナーによるイベント ラッピング

この方法には、Rails 固有のリスナー内で JavaScript スクリプトをラップすることが含まれ、効果的にページの読み込み時に実行されます。

アプローチ 2: ターボリンクの利用イベント

Turbo-Links は、必要な JavaScript コードをトリガーするために使用できる特定のイベント「page:load」を提供します。このイベントを利用することで、開発者は後続のクリックによって発生する問題を回避できます。

CoffeeScript ユーザーの場合、次のコード スニペットが解決策を提供します。

ready = ->

  ...your coffeescript goes here...

$(document).ready(ready)
$(document).on('page:load', ready)

このスニペットの最後の行は次のメッセージをリッスンします。 Turbo-Links がトリガーする「page:load」イベント。

JavaScript ユーザーの場合、次の同等のコードを使用できます。採用:

var ready;
ready = function() {

  ...your javascript goes here...

};

$(document).ready(ready);
$(document).on('page:load', ready);

Rails 5 では、更新された Turbolinks 5 を使用して、「page:load」イベントが「turbolinks:load」に置き換えられ、最初のページ読み込み時にもトリガーされます。これにより、コードが次のように簡素化されます。

$(document).on('turbolinks:load', function() {

  ...your javascript goes here...

});

これらのソリューションを実装することで、開発者は、Turbo-Links の存在にもかかわらず jQuery イベントが正しく機能し続けることを効果的に保証できます。

以上がjQuery の `$(document).ready()` を Rails 4 の Turbo Links で動作させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。