2009-04-11 8 views
5

ajaxがロードされたタブのコンテンツにいくつかのコードを適用するにはどうすればよいですか? $(document).readyを読み込んだコンテンツの中で使ってみましたが、CSSスタイルの読み込みができませんでした(理由はわかりません)。ajaxの後のコールバックタブのロード

コールバック関数はありますか? $(document).readyとスタイルを別の方法でロードしたドキュメントの中で使うべきですか?

$(document).readyを読み込んだドキュメントの中に使用している場合は、jqueryとそのプラグインへの参照も含めるべきですか?

答えて

8

を使用してあなたがload eventを試してみましたか?これは、タブの内容がロードされたときに呼び出される必要があります。

一般に、ロードされた要素を新しいページとして扱い、$(document).readyを呼び出すべきではありません。これは新しいページではなく、いくつかの新しい要素がDOMに追加されています。すべてのAjaxメソッドは、データが正常にロードされたときに呼び出されるコールバックメソッドを備えています。

$('#nav_tabs').tabs({ 
    select: function(event, ui){ 
     var url = $.data(ui.tab, 'load.tabs'); 
     if (url == '?ak=/account/logout') { 
      //exclude the logout from using ajax 
      location.href = url; 
      return false; 
     } 
     return true; 
    }, 
}).bind('tabsload',function(event, ui){ 
    alert('The tab is loaded. What now?'); 
}); 
+0

ロードイベントは、すべてのタブに適用されます。そのイベントを使用し、その中の選択したタブを取得して新しいコードを適用する必要がありますか? すべてのタブには、テーブルやフォームなどの異なるDOMがあります。 – Gerardo

+0

私はイベントを自分で使っていません。コールバックメソッドに渡されるイベントまたはuiパラメータからロードされたタブを取得できるかどうかを確認してください。残念ながら、ドキュメンテーションはこれらのパラメータについて説明していません。タブのDOMを使用すると動作しますが、それは「汚れた」解決策です。 – kgiannakakis

+0

慣習に従い、私はevent.target.idがコンテンツがロードされているタブのIDになると思います。 Firebugとconsole.logを使って調査してください:) –

5

ajaxでコンテンツを読み込むためにどのようなコードを使用していますか? loadまたはajaxのようなjQueryコマンドを使用している場合は、コードをコールバック関数内に置くことをお勧めします。例えば、load

$('#myUITab').load('anotherPage.html', function() { 

    // put the code you need to run when the load completes in here 

}); 
+0

私はタブの方法で使用しています: $( '#コンテンツ')をタブが( '追加'、 'タブ/ editor.php'、データを[I] .nombre)。 – Gerardo

0

これを行うための別の方法はajaxCompleteを使用することですUI "タブ"はコールバックメソッドを提供します。下をチェック!

$("#tabs").tabs({ 
    ajaxOptions: { 
     error: function(xhr, status, index, anchor) { 
      $(anchor.hash).html(
       "error occured while ajax loading."); 
     }, 
     success: function(xhr, status) { 
      //alert("ajax success. "); //your code 
     } 
    } 
}); 
0

あなたはtabsloadイベントを使用することができます。

2

のjQuery:http://jqueryui.com/demos/tabs/#event-load

が、それは以下の例に働くことができる方法を参照してください

$("#loading_comtainer").ajaxComplete(function(event,request, settings){ 
    alert("ajaxCompleted"); 
}); 
関連する問題