如何在jQuery UI选项卡中使用jQuery延迟对象?

时间:2012-09-27 22:28:32

标签: jquery jquery-ui-tabs jquery-deferred

我遇到了将jQuery延迟对象与jQuery UI选项卡集成的一些问题。

基本上,我想实现这样的目标:

(function($) {
   var tabs;

   function func1 () {
      return $.get(url, function() {
         // ajax call 1
      });
   };

   function loadTabs() {
     return tabs = $('.tabs').tabs({
        ajaxOptions: {
            beforeSend: function(jQXHR, settings) {
                // load spinner image
            },
            complete: function(jqXHR, settings) {
                // destroy spinner image
            }
        }
    })
   };

   $.when(func1(), loadTabs()).then(function() {
      tabs.bind('tabsload', function(event, currentTab) {
         // do something
      }
   });
})(jQuery);

基本上,我不认为我从标签实例化中获取了延迟对象。我已经读过升级到jQuery 1.9 UI候选版本可能会公开API以获取延迟对象,但我似乎无法找到该功能的文档。

编辑:这个实现的总体目标是在收到func1()和loadTabs()的结果时显示加载微调器图标。一旦这两个过程完成,我想隐藏/销毁微调器。

1 个答案:

答案 0 :(得分:1)

为什么不这样做:

function myTabs() {
    loadSpinner();
    $.ajax(url, { data: data})
       .done(loadTabsFunction)
       .always(killSpinner)
    ;
}

function loadTabsFunction(response) { }

function loadSpinner() { }

function killSpinner() { }

myTabs();