2009-11-12 5 views
6

すべて、JQuery UIのタブをバックグラウンドでプレロードする

最初のタブがまだロードされている間にすべてのJQuery UIタブをプリロードするにはどうすればよいですか?私はリモート:本当のオプションを試したが、それは仕事をしなかった?タブの読み込み中は、各タブ名の横にajaxスピナーが表示されます。彼らは一度ロードされた後にタブが再読み込みされないように

$tabs = $('#tabs').tabs({ 
    cache: true 
}); 
var total = $tabs.find('.ui-tabs-nav li').length; 
var currentLoadingTab = 1; 
$tabs.bind('tabsload',function(){ 
    currentLoadingTab++; 
    if (currentLoadingTab < total) 
     $tabs.tabs('load',currentLoadingTab); 
    else 
     $tabs.unbind('tabsload'); 
}).tabs('load',currentLoadingTab); 

それは、キャッシュオプションを使用してタブを初期化します。

おかげ

答えて

10

はこのような何かを試してみてください。 次に、合計の数を確認し、次のタブを1に設定します(タブは0から始まるインデックスが付けられます)。 次に、ロードイベントでイベントをバインドして、次のタブのロードが開始され、 。それを開始するには、2番目のタブを読み込みます。上記以外

+0

これは素晴らしい作品!ありがとう..複数のタブを順番に読み込むのではなく、一度に複数のタブをプリロードすることは可能ですか?また、タブテキストの横にスピナーイメージを置くことは可能ですか?私はそれが "Loading .."を表示しないようにするために、タブがロードされている間、スピナーイメージと共に追加されたタブテキストでなければなりません。 ありがとうございます。 – Balu

+0

スピナーテキストは、 uui.tabsへ: $ abs = $( '#tabs')。tabs({ キャッシュ:true、 スピナー: '' }); – Lathan

+0

あなたはタブのインデックスが1から始まることを意味しますか?それ以外の場合は、このコードは、load – Andrey

0

もっとエレガントなソリューション:

$tabs = $('#tabs').tabs({ 
    cache : true, 
    load : function(event,ui) { 
     try { 
      $tabs.tabs('load',ui.index+1); 
     } catch (e) { 
     } 
    } 
}); 
+0

を呼び出す前にインクリメントして以来、タブ2をロードしないようです。これは、別のタブをクリックするたびにすべての後続のタブをリロードしませんか?だから私は一度に1つずつタブを通過すると言います。最初のタブをクリックすると、すべてのタブが読み込まれます。次に、2番目のタブをクリックすると、2の後にあるすべてのタブが*** ***に再度読み込まれます。 – Travesty3