2012-04-26 131 views
0

我有以下功能:如何強制選擇特定的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事件讓我的綁定函數運行?

回答

2

我不喜歡this solution,但它的工作。如果有人有更好的方式,請發佈。

var selectedTab = $tabs.tabs('option', 'selected'); 
$tabs.find('li').eq(selectedTab).removeClass('ui-tabs-selected').end().tabs('select', selectedTab); 
+0

更好的方式公佈。:) – pete 2012-05-02 13:37:45

+0

嘿,抱歉表決通過你的問題早。這並不意味着無禮。只是認爲它會引導你走向正確的方向。有+1。 – Joe 2012-05-15 19:19:40

+0

@JoeTuskan哈哈,你是個學者和紳士!我太在乎點(而且我沒有太多)......所以降薪受到了傷害。你確實把我引向了正確的方向。在發佈之前,我仔細查看了相關的問題,我只是錯過了一些如何:( – ubiquibacon 2012-05-15 19:35:14

0

嘗試在選擇標籤後添加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

相關問題