2011-01-01 5 views
3

前に私はjQueryを使ってそれを使用しようとしていると、それは仕事をdoesntのが、いくつかの同僚は、レールjQueryのAJAX:イベント

$('[data-once=true]').live('ajax:before', function(request, e) { 

}); 

でこれを使用し見てきた、このイベントは、レールのjqueryのアダプタが付属していますか?

答えて

4

はい、ajax:beforeは、最新のバージョンではajax:beforeSendではありませんが、追加/トリガーを生成するjQueryイベントです。

$(document).bind('ajaxSend', function(e, request, options) { 
    $('[data-once=true]').something(); 
}); 
+0

Nick: 'ajaxSend'は' .live() 'で動作することは確かですか? '.bind()'だけで動作します(私が何かを逃しているわけではありません)。 – user113716

+0

@patrick - どのバージョンのjQueryを使用していますか?グローバルイベントはさまざまなバージョンで大幅に変化しました。 –

+1

ニック:1.4.4を使用しています。 '.live()'を使った[ここに例があります](http://jsfiddle.net/LvExW/)、 '.bind()を使って[ここに例があります](http://jsfiddle.net/LvExW/1/) ) '。どちらも 'success'でコンソールにログしますが、' bind'バージョンだけが 'ajaxSend'でそうします。 – user113716

1

この'ajax:before'は、その名前でカスタムイベントを定義していない限り、.live()が処理するのには便利なイベントではありません。

+0

なぜ:(ajax:beforeがレールにJSフレームワークに依存しない、変更前の周りにあった)しかしjQueryのでは、あなただけのように、ajaxSend global eventを使用して、世界的にこれに添付することができますか?リモートフォームを動的にロードする場合は、リスナーを機能させたい場合もあります。 – crispy

+0

@duddle:この回答が正しい場合には、この回答をdownvoteしないでください。すでに述べたように、 '' ajax:before''は、その名前でカスタムイベントを定義していない限り、 '.live()'に便利なイベントではありません。特定のイベントに特定のタスクを実行させることは有用ではないと言っているわけではありません。私は 'live()' **がデフォルトでそのイベントを認識しないと言っています**。カスタムイベントを手動で定義する必要があります。 – user113716

+0

さて、live()*はこのイベントをRailsでデフォルトで認識します。あなたがRailsコンテキストを尊重せずに解決策を提供することなくその声明をしたので、あなたの答えがそれほど役に立たないことがわかります。 – crispy

2

私はレールdevのではないので、私はこの方程式の変更をレールかどうかはわかりませんが、私は、プレーンオーレ」JSで前AJAXに機能を付けるだろうか、これは次のとおりです。

$.ajax({ 
    beforeSend: function(){ 

    alert("Before"); 

    }, 
    complete: function(){ 

    alert("after"); 

    } 
}); 

これらのイベントは、以降のすべてのAJAX要求に対して発生することに注意してください。あなたは基本的にAJAXオブジェクトを購読しています。

詳細はjQuery AJAX Events Documentationを参照してください。

+0

なので、plain JSはjQueryを意味しますか? – grantwparks

関連する問題