如何强制选择特定的jquery-ui选项卡索引或强制在特定选项卡上选择“选项卡选择”事件?
问题描述:
我有以下功能:如何强制选择特定的jquery-ui选项卡索引或强制在特定选项卡上选择“选项卡选择”事件?
function createTabs(selectorText, selected) {
var tabs = $(selectorText).tabs();
if(selectorText == '#content .tabs') {
contentTabs = tabs;
$(selectorText).unbind('tabsselect').bind('tabsselect', function(event, ui) {
var queryNumber = $(ui.tab).data('query_number');
if(queryNumber) {
$(ui.panel).html('<table id="table"></table>')
var table = $(ui.panel).find('table');
populateFlexigrid(table, queryNumber);
}
});
}
if(!selected) {
selected = 0;
tabs.tabs('select', 0)
}
tabs.tabs('select', selected);
}
在在函数结束时if
声明我设置所选标签到任何标签应选择。在输入此if
语句时,选中的选项卡始终为0,因为选项卡刚创建。所以我的问题是,我试图选择一个已经被选中的标签。这意味着我绑定到该选项卡的功能没有执行。
有没有什么办法可以强制标签被选中或者该标签上的tabsselect
事件让我的绑定函数运行?
答
我不喜欢this solution,但它的工作。如果有人有更好的方式,请发布。
var selectedTab = $tabs.tabs('option', 'selected');
$tabs.find('li').eq(selectedTab).removeClass('ui-tabs-selected').end().tabs('select', selectedTab);
答
尝试在选择标签后添加tabs.trigger('tabsselect');
。
UPDATE:
对不起这个延迟,但我终于找到了一段时间,在这方面努力。
尝试将“tabsselect”函数重写为命名函数(非匿名),这样您可以在任何时候使用它(在构造事件提供的ui
参数之后)调用它。下面的示例代码(working fiddle):
function tabSelected(event, ui) {
var queryNumber = $(ui.tab).data('query_number');
var table = $(ui.panel).find('table');
console.log('Tab ' + ui.index + ' "tabsselect" event triggered.');
if (queryNumber) {
$(ui.panel).html('<table id="table"></table>');
populateFlexigrid(table, queryNumber);
}
}
function createTabs(selectorText, selected) {
var tabs = $(selectorText).tabs();
var tab = null;
var panel = null;
var ui = {
"index": 0,
"panel": tab,
"tab": panel
};
if (selectorText == '#content .tabs') {
contentTabs = tabs;
$(selectorText).unbind('tabsselect').bind('tabsselect', tabSelected);
}
if (!selected) {
selected = 0;
tabs.tabs('select', 0);
}
//create the ui parameter
ui.index = selected;
ui.tab = $(tabs.children('ul:first').children('li')[selected]).children('a')[0];
ui.panel = tabs.children('div')[selected];
//run the "tabsselect" function
tabSelected(null, ui);
}
createTabs('#content .tabs', 0);
+0
不,没有骰子:( – ubiquibacon 2012-04-26 19:12:43
更好的方式公布。:) – pete 2012-05-02 13:37:45
嘿,抱歉表决通过你的问题早。这并不意味着无礼。只是认为它会引导你走向正确的方向。有+1。 – Joe 2012-05-15 19:19:40
@JoeTuskan哈哈,你是个学者和绅士!我太在乎点(而且我没有太多)......所以降薪受到了伤害。你确实把我引向了正确的方向。在发布之前,我仔细查看了相关的问题,我只是错过了一些如何:( – ubiquibacon 2012-05-15 19:35:14