0

我正在尝试模拟jquery-ui 1.9ui.newTab, ui.oldTab中引入的功能。(Drupal 还不支持 1.9,所以我使用的是1.8。)这是我的模拟代码:

var oldTab;
var newTab;
mytabs.tabs({ 
  select: function(event, ui) {  
    oldTab = newTab;
    newTab = $(ui.tab); 
    if (oldTab){
      console.log("do stuff with oldTab");              
    }
    console.log("do stuff with newTab);
  }
});

当用户单击新选项卡时,会触发此“选择”回调。到现在为止还挺好。

但是,当 jquery-ui 首次初始化选项卡并选择最左侧的选项卡时,不会触发此“选择”回调。因此,在用户第一次单击新选项卡时,未定义 oldTab。

我尝试添加代码以编程方式选择最左侧的选项卡:

mytabs.tabs('select', 0)

但是选择回调仍然没有被触发。我相信这是因为最左边的选项卡已经被选中。看这里

当 jquery-ui 初始化选项卡并选择最左边的选项卡时,关于如何将 newTab 初始化为所选选项卡的任何建议?

4

1 回答 1

1

这是因为第一个选项卡没有被选中,它作为小部件初始化的一部分被激活,不会触发选择事件。

一种可能的解决方案是将初始化值设置oldTab为声明的一部分。

var oldTab;
var newTab = mytabs.find('> ul a:first');
mytabs.tabs({ 
  select: function(event, ui) {  
    oldTab = newTab;
    newTab = $(ui.tab); 
    if (oldTab){
      console.log("do stuff with oldTab",oldTab.get());              
    }
    console.log("do stuff with newTab", newTab.get());
  }
});

演示:Plunker

于 2013-06-24T02:58:48.423 回答