2011-01-20 9 views
11

私のアプリケーションのすべてのAJAX読み込みコンテンツを、アプリケーションのJQueryスクリプトで評価することができます。通常の読み込みコンテンツと同じです。例えばjQueryのは次のように、セレクタのAJAXロードされたコンテンツをスキャン「モーダルボックスのリンク」など アプリケーションを再実行するajaxをロードしたコンテンツでJavascriptを使用する

すべての私のJavaScriptは、通常のHTTP読み込まれたページのために正常に動作し、通常のdocument.ready、である:

$(document).ready(function(){ 
    // my apps javascript 
}); 

I .ajaxCompleteのようなものを使用して、document.readyに含まれるすべてのものを再実行して、jQueryセレクタの新しくロードされたAJAXコンテンツを評価したいとします。

$(document).ajaxComplete(function(){ 
    // Re-run all my apps javascript 
}) 

これを行うには、私は.ajaxCompleteに入れることができるコードはありますか?

ご希望の場合は、私にご連絡ください。質問の詳細を編集します。

+0

お探しの情報がありますか?私の答えはまだ何かが欠落しているように感じ、私はあなたが求める答えを見つけることを確認したい。 – jmort253

+0

@ jmort253 - あなたの助けてくれてありがとう、ハンターの答えは、私が理解しようとしていたものです。 –

答えて

12

あなたが関数にあなたのdocument.readyのすべてをカプセル化し、ちょうどより良いアプローチは、live()delegate()のjQueryを利用することであろう

か...

再バインドするために、再度その機能を呼び出すことができますこれらのセレクタに一致するすべての現在および将来の要素がこれらのイベントにもバインドされるようにします。 live()を使用して

例:delegate()を使用してhttp://api.jquery.com/live/

$('.clickme').live('click', function() { 
    //all elements that exist now and elements added later 
    //with this class have this click event attached 
}); 

例:http://api.jquery.com/delegate/

$("table").delegate("td", "hover", function(){ 
    //all current and future td elements in all current tables 
    //have this hover event attached 
}); 
+0

ありがとうハンター、これは正しい道に私を置く。 –

+2

jQuery 1.7以降、.live()メソッドは推奨されていません。 .on()を使用してイベントハンドラをアタッチします。 jQueryの古いバージョンのユーザーは、.live()よりも.delegate()を優先して使用する必要があります。 – Nazariy

1

あなたがする必要がどのような機能ではなく、匿名であなたのコードを定義しています。匿名関数は再利用できませんが、関数を記述すると、その関数を複数のイベントにバインドできます。

関連する問題