Ruby on Rails 3.0.7 アプリで jQuery 1.6.2 を使用しており、 (jQuery 1.7 にアップグレードして を使用する予定で)から.live()
に切り替えたいと考えています。Railsのオプションを使用してajax リクエストを送信し、イベントを使用してレスポンスのハンドラーを設定しようとしています。これらの ajax リクエストは、多くの場合、実際にリクエストをトリガーした要素を削除/置換します。.delegate()
.on()
:remote => true
ajax:complete
私が抱えている問題は、要素がajaxリクエストに置き換えられた場合、リクエストが完了したときにとにかくハンドラー.live()
をトリガーするように見えるが、そうではないことです(また、jQuery 1.7で少し実験を行い、それが機能しないことがわかりましたまた)。ajax:complete
.delegate()
.on()
基本的に、ajax_link
要素が置き換えられた場合、これは機能します:
$(".ajax_link").live("ajax:complete", function(){
//Do something...
});
しかし、これはしません:
$("body").delegate(".ajax_link", "ajax:complete", function(){
//Do something...
});
なぜこれが起こっているのかについて何か考えはありますか? 舞台裏で.delegate()
使用するSOの他の場所を読んだので、この動作は私にとって驚くべきものです。.live()
また、この問題に取り組むためのより良い方法についての提案は大歓迎です。