首次初始化选项卡时,不会触发jquery-ui选项卡回调

时间:2013-06-24 02:45:06

标签: jquery-ui jquery-ui-tabs

我正在尝试模拟jquery-ui 1.9中引入的ui.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首次初始化选项卡并选择最左边的选项卡时,不会触发此“select”回调。因此,用户第一次点击新标签时未定义oldTab。

我尝试添加代码以编程方式选择最左边的标签:

mytabs.tabs('select', 0)

但是选择回调仍然没有被触发。我相信这是因为最左边的标签已被选中。见here

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

1 个答案:

答案 0 :(得分: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