2011-09-21 11 views
7

私はAJAXリクエスト($(elem).load()経由)でタブを読み込む簡単なカスタムタブモジュールを持っています。 AJAXがロードされている各ページにJavaScriptがあります。ページが初めてロードされるとき(AJAXではなくURLの直接入力を介して)、javascriptは完全に起動します。 AJAXタブを介してページから移動すると、ページのjavascriptが読み込まれなくなります。jQuery - AJAXでロードされたコンテンツを読み込んだときにdocument.readyが起動しない

強制的に実行する方法はありますか?

(それが助け場合は発射されていないJavaScriptは$(document).ready()関数に配置された)

答えて

10

あなたはload()機能のコールバックを使用する必要があります。

$(elem).load('source.html', function() { 
    // here you need to perofrm something what you need 
    ActionOnDocumentReady(); 
}); 

あなたに$(document).readyにすべてのアクションを置くことができますいくつかの関数(ex ActionOnDocumentReady())をコールし、load()コールバックで呼び出します。

5

domereadyイベントは、最初のdomが準備完了(名前とjquery-apiのように)の場合にのみ発生します。

jquerys load()を使用し、そのロードが完了している場合に関数を起動する場合は、コールバック関数(according to the api)を使用する必要があります。

あなたはdomreadyと負荷のイベントで同じことをしたい場合は、最善の方法は、そのための新しい関数を定義することです:

function dostuff(){ 
    // do some stuff here 
} 

をし、両方のケースで、この機能を発射:

$(function(){ // domready | shortcut for "$(document).ready()" 
    dostuff(); 
}) 

$('#something').load('script.php', function() { // callback on load() 
    dostuff(); 
}); 
3

新しい方法で$(document).ready()コードを入力してください。それをmethodAと呼ぶことができます。今度はを$(document).ready()とします。次に、ajaxリクエストが成功した後、同じメソッドを呼び出します。それはあなたの問題を解決するはずです。

関連する問題