2010-04-11 81 views
1

我有下面的代碼非常簡單:jQuery UI的標籤負荷不會觸發事件

function init() { 
    var articleTabs = $('#articleTabs'); 
    articleTabs.tabs('add', 
      admin.pageVars.siteRoot + '/articles/themes/' + admin.pageVars.params.id, 'Temas'); 
    articleTabs.tabs({ 
     load : function(event, ui) { 
      $('.jsonForm').jsonForm(); 
     } 
    }); 
} 

這成功地增加了一個新的標籤面板,現有標籤控件。然而,激活後,加載功能從不會觸發。

我的錯誤是什麼? (沒有javascript例外)

+0

您是否嘗試在Firefox中運行它並查看了Firebug,如果它通知了任何內容? – 2010-04-11 00:40:35

+4

那麼,你應該構造tab元素,然後使用add方法。不倒退。 – Ben 2010-04-11 00:50:29

+0

該代碼運行時該選項卡可以正常工作。 firebug表示一切正常:它執行第二個.tabs({...}),但是在將遠程頁面加載到控件中時,不會執行加載閉包。 – Jan 2010-04-11 04:42:13

回答

0

試試這個,因爲你不能在標籤創建的時間做這件事:

function init() { 
    var articleTabs = $('#articleTabs'); 
    articleTabs.bind('tabsload', function() { 
    $('.jsonForm').jsonForm(); 
    }); 
    articleTabs.tabs('add', admin.pageVars.siteRoot + '/articles/themes/' + admin.pageVars.params.id, 'Temas'); 
} 

這會將它首先是安全的,但這種結合的tabsload event而不是load選項/處理程序,它在初始小部件創建後未設置。

+0

對不起,但我沒有專家。我應該把上面的函數放在我的uiTabs.js文件的頂部,PLease可以給你更多的細節謝謝 – Rifki 2011-08-25 08:16:15

+0

@Rifki - 當你想綁定的時候,你會把它放在你自己的文件中,調用'init();'並創建選項卡,或者只是將上面的函數中的代碼作爲大函數的一部分運行,刪除'function init(){}'wrap。 – 2011-08-25 10:19:53

+0

此解決方案仍然不適合我....在此處查看我的代碼:http://stackoverflow.com/questions/9071878/jquery-ui-tabs-load-tabsload-event-does-not-fire – Colleen 2012-01-30 22:38:52