2011-08-21 87 views
2

我有一個jQueryUI選項卡對象,我想處理被點擊的選項卡事件,當已被選中。
使用:jQueryUI - 處理'點擊''選擇'事件已經選擇的標籤

$("#tabs").tabs({ 
    select: function (event, ui) { 
     onSelected(); 
    } 
}); 

我能夠處理該事件時,該選項卡首次單擊(選擇),但是當我再次點擊 - 處理程序不被調用。
有沒有解決方案?


如果沒有 - 將適合我的需要另一種選擇是:
定義標籤可摺疊的,和(由用戶點擊未)通過腳本倒塌他們。 我定義標籤對象:

$("#tabs").tabs({ 
    collapsible: true 
}); 

,但是當我嘗試模擬使用點擊:

$("#tabs").tabs("select", 0); 

$("#tab-link-0").trigger('click'); 

沒有任何反應。

我需要指出的是,標籤動態添加,使用:

$("#tabs").tabs("add", "#tab-link-0", "title 0"); 

任何意見\建議任何情況下?

感謝,

回答

3

我試驗了一下,發現了就可以防止一個標籤崩潰由select處理程序調用event.preventDefault()。當你在當前選擇的選項卡上觸發select處理程序(以防止摺疊選項卡)時,顯然只需要執行此操作,否則將永遠無法切換選項卡。這值得測試,因爲在jQuery事件上致電preventDefault(),但它似乎給你想要的行爲,至少在Chrome中:

var tabs = $("#tabs").tabs({ 
    collapsible: true, 
    select: function(event, ui) { 
     if (tabs.tabs('option', 'selected') === ui.index) { 
     // Prevent the tab from collapsing if the event fired on the 
     // currently-selected tab 
     event.preventDefault(); 
     } 
     onSelected(); 
    } 
}); 
+0

優秀的解決方案!非常感謝,這就是訣竅。 –

+0

+1也來自我。 – Icarus