我正在尝试模拟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初始化为所选选项卡的任何建议吗?
答案 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