Предварительная загрузка вкладок пользовательского интерфейса JQuery в фоновом режиме - PullRequest
6 голосов
/ 12 ноября 2009

All

Как мне предварительно загрузить все вкладки пользовательского интерфейса JQuery, пока первая вкладка еще загружается? Я пробовал удаленный вариант: правда, но он не работал? Во время загрузки вкладок рядом с именем каждой вкладки должен быть вращатель ajax.

Спасибо

Ответы [ 2 ]

10 голосов
/ 13 ноября 2009

Попробуйте что-то вроде этого:

$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 голосов
/ 01 марта 2012

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

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