2009-11-12 2 views
6

Все,вкладки Preload JQuery UI в фоновом режиме

Как я могу предварительно загрузить все вкладки JQuery UI, тогда как закладка первого по-прежнему загружается? Я попробовал вариант remote: true, но он не работал? При загрузке вкладок должны быть ajax spinners рядом с каждым именем вкладки.

Благодаря

ответ

10

попробовать что-то вроде этого:

$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); 

Он инициализирует вкладки с возможностью кэширования, так что ушки не перезагружается после того как они были загружены только один раз. Затем он обнаруживает общее количество вкладок и устанавливает следующую вкладку для загрузки как 1 (индексы индексируются начиная с 0) Затем он связывает событие в событии загрузки, чтобы начать загрузку следующей вкладки, пока она не ударила их всех , Чтобы запустить его, он загружает вторую вкладку.

+0

Это прекрасно работает! Спасибо .. Возможно ли предварительно предварительно загрузить несколько вкладок, а не загружать их один за другим? Кроме того, можно ли поместить изображение прядильника рядом с текстом вкладки? Я не хочу, чтобы он отображал «Загрузка ..» .. Это должен быть только текст вкладки, добавленный с изображением прядильщика, когда вкладка загружается. Заранее спасибо .. – Balu

+0

Текст прядильщика - это опция для отправки to ui.tabs: $ abs = $ ('# tabs'). tabs ({ cache: true, spinner: '' }); – Lathan

+0

Вы имеете в виду, что вкладки индексируются, начиная с 1? В противном случае этот код кажется, что он никогда не загрузит вкладку 2, так как вы увеличиваете до вызова нагрузки – Andrey

0

Более элегантное решение, чем выше:

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

Не будет ли это повторно загружать все последующие вкладки каждый раз, когда вы нажимаете на другой? Поэтому скажите, что я просматриваю вкладки по одному. Когда я нажимаю первую вкладку, все вкладки будут загружены. Затем, когда я нажимаю вторую вкладку, все вкладки после 2 будут снова загружены *** ***. – Travesty3

Смежные вопросы