0

$.validator.unobtrusive.parse に関するこの質問と回答を見つけました

リモート呼び出しまたはjQueryを使用してパーシャル/コンテンツをリモートでロードすると、jquery ujsが機能しない

これは、ajax を使用してロードされたページの一部で jquery を機能させるために必要なことのようです。

しかし、私はそれが何をしているのか知りたいです!rails ujs を呼び出していますか、それとも jquery と直接やり取りしていますか? Rails ujs git ハブ サイトと jquery ドキュメントの両方を検索しましたが、どちらの場所にも何も表示されませんでした。どこかにドキュメントはありますか?

助けてくれてありがとう。


おそらくこれはより明確です:

create.js.erb または update.js.erb を使用してページの一部を追加または変更した場合、ページのこれらの部分で jquery を動作させるにはどうすればよいですか。要素を再度ソート可能にしようとしています。この質問は最適な場所の編集に関するものです。他にもいくつかの質問があり、上記のリンクが唯一の答えのようで、うまくいきません。

では、rails ujs を使用して一度変更したページの一部を jquery に「見てもらう」にはどうすればよいでしょうか。

4

1 に答える 1

2

これは、「再作業」したいページ要素の種類と、元の「作業」がどのようにトリガーされたかに大きく依存します。

元の jquery コードが次の方法で単純にトリガーされる場合:

$(document).ready(function(){
  $('#mydiv").css('color','red');
});

そして、update.js.erb が内容を変更した後に div の色をリセットしたい場合 (ばかげた例です)、カスタム イベントを作成して div にバインドできます。

$(document).ready(function(){
  $('#mydiv").on('rework', function() {
    $(this).css('color','red');
  });
});

次に、update.js.erb の最後の行で次のようにします。

$('#mydiv').trigger('rework');

元の作業が on change イベントまたはクリック イベントなどによって開始された場合、そのイベントをトリガーするだけで済みます。

$('#mydiv').trigger('click');

トリガーされたイベントは実際のイベントとまったく同じではないため、イベントのトリガーはトリッキーであり、イベントは一般的にトリッキーです。

単純な 1 行または数行の場合は、update.js.erb の最後に重複したコードを平手打ちするだけの簡単なものかもしれません。

于 2012-04-15T19:57:11.367 に答える