4

イベントを強制的にdocument.readyJavascript で発生させる方法はありますか? デフォルトでターボリンクを使用するという Rails 4 の新しいデフォルトにより、ページを切り替えるときにこのイベントが発生しなくなります。これにより、 でラップされた「従来の」jQuery コードで問題が発生します$(function(){});

私は周りを見回しましたが、コードを介してこのイベントを発生させる方法は見当たりません。ここでのほとんどの回答では、他の回避策が提供されています。

では、通常の Javascript コードを介して document.ready を起動することさえ可能ですか?

4

4 に答える 4

3

jQueryを使用していますか?その場合は、$.ready(); コードの最後で Jquery の関数を明示的に呼び出してみてください。これにより、独自の機能と使用しているプラ​​グインの機能の両方で、すべてのjQuery の「準備が整った」関数が強制的に呼び出されます。

それでもうまくいかない場合は、 を試すことができます$(window).load();

これらのいずれも機能せず、何らかのタイプの非同期呼び出しを使用している場合は、最初に取り除くべき他の問題がある可能性があります。幸運を!

于 2013-07-06T03:15:41.867 に答える
1

最も簡単な解決策:

Gemfile を挿入します。

gem 'jquery-turbolinks', '~> 1.0.0'

これを application.js に挿入します。

//= require jquery.turbolinks

( を忘れないでくださいbundle update)

coffescript コードに次のコードがある場合、ターボリンクがアクティブなときにページ全体のリロードまたはリンク経由でページを開くためにトリガーされます。

$ ->
   alert 'Hello World'

$ ->意味document.ready

于 2013-07-07T15:46:29.150 に答える
1

コードを大きく変更せずにこれを行う最も簡単な方法は、ready の代わりにカスタム イベントをリッスンし、ready イベント内でカスタム イベントを発生させることだと思います。

于 2013-07-06T03:25:08.567 に答える
1

ターボリンクのドキュメントから:ドキュメントがターボリンクのカスタムページイベントの1つをリッスンするようにする必要があります。たとえば、次のようになります。

$(document).on('page:change', function() {
    // Your code
});
于 2013-07-06T03:25:58.440 に答える