jqueryui选项卡(1.9.1)在加载时激活
我有这样的代码:
var enTabs = { "Layout": 0, "Edit": 1, "Stuff": 2 } $("#tabs").tabs({ activate: function (event, ui) { switch (ui.newTab.index()) { case enTabs.Layout: // loads remote data, processes it, draws it to this tab; break; case enTabs.Edit: // loads remote data, processes it, draws it to this tab; break; case enTabs.Stuff: // loads remote data, processes it, draws it to this tab; break; } } }).tabs("option","disabled",[enTabs.Edit,enTabs.Stuff]); console.log("active tab", $("#tabs").tabs("option","active")); // says "0"
根据jQuery“by design”声明( http://bugs.jqueryui.com/ticket/8735 ),首次绘制选项卡时不会处理activate
事件; 或者,当您设置.tabs("option","active",enTabs.Layout)
如果当前索引与您设置的选项/活动匹配,则激活不会触发,并且它初始化为零。
确保在第一次绘制选项卡时,为第一个(第0个)选项卡触发’activate’的最佳方法是什么,意识到我不想绑定到’create’,因为我不想加载数据在标签上直到它们实际被点击?
我无法做到
$("#tabs").tabs( "option", "active", -1 ).tabs( "option", "active", enTabs.Layout)
一贯工作。
你可以使用这样的东西
function loadTab(index) { switch (index) { case enTabs.Layout: // loads remote data, processes it, draws it to this tab; break; case enTabs.Edit: // loads remote data, processes it, draws it to this tab; break; case enTabs.Stuff: // loads remote data, processes it, draws it to this tab; break; } } $(function () { $("#tabs").tabs({ create: function (event, ui) { loadTab(ui.tab.index()) }, activate: function (event, ui) { loadTab(ui.newTab.index()) } }); });
这里有一个类似的问题JQuery UI标签1.10.0激活在创建后没有被调用
这是一种在页面加载时触发激活function的方法:
$('#tabs') .tabs({ active: false, collapsible: true, activate: function(){console.log('Tab activated');} }) .tabs('option', 'active', 0) .tabs('option', 'collapsible', false);
阐释:
JQuery选项卡使用选项进行初始化
-
collapsible:true
//需要使用选项active:false -
active:false
//表示没有可见的标签(全部折叠)
然后,我们立即激活我们想要在pageload上看到的选项卡
-
.tabs('option', 'active', 0)
//这里标签0被激活,但也可能是其他标签
最后我们删除了可折叠选项(如果你不想要它……)
-
.tabs('option', 'collapsible', false)