2011-02-02 86 views
0

我幾乎爲jQuery UI選項卡創建了一個插件,它爲我提供了下一個和上一個按鈕。但是,我無法綁定到tabscreate事件來爲顯示的第一個選項卡應用一些邏輯。jQuery Tabs - 綁定到tabscreate事件

我注意到我的插件內部和外部(頁面上的jQuery)。

後做$('#tabs').tabs();

這工作

$(tabsSelector).bind("tabsshow", function (event, ui) { 
    alert("On Tab Show"); 
}); 

這並不

$(tabsSelector).bind("tabscreate", function (event, ui) { 
    alert("On Tabs Creation"); 
}); 

難道純粹是因爲標籤是以前創建的,如果這樣我怎麼可以通過添加到創建活動一個插件?

回答

2

我想你可以用方法length查詢標籤計數。用select方法進行導航就足夠了。

如果您確實需要tabscreate事件,請在您的插件中調用tabs()方法,並在那裏傳遞事件處理函數。像這樣的:

function CustomTabs(selector){ 
    $(selector).tabs({ 
     create: function(event, ui) { /* put your code here */ } 
    }); 
} 
+0

選項卡數可以查詢$(「#標籤」)。標籤(「長度」),所以我有機會到這一點。我的標籤導航工程,但只有當我點擊任何其他選項卡(如im綁定到'tabsshow'事件)。我需要綁定到創建選項卡時觸發的事件,以附加我的點擊事件。我不確定你的意思與你的第二點。 – dmce 2011-02-02 16:15:15

+0

啊,是的。關於你的編輯,這是它如何開始,並表現良好。問題在於它很難在不同的頁面之間重複使用額外的功能(這意味着需要在需要的地方添加額外的代碼來爲所有標籤創建) - 因此我查看了一個插件。 [jQuery UI文檔](http://jqueryui.com/demos/tabs/#event-create)提到能夠綁定到'tabscreate'似乎很奇怪,但它不起作用(或者更有可能,即使沒有這樣做正確) – dmce 2011-02-02 16:35:12

0

簡單的方法是不要使用你的方法。使用「$(...)。tabs({create:function(event,ui){your code here}})」會工作,但請記住調用了「create」事件(不知道爲什麼)在「show」事件之後(如果使用它)。另請注意,「ui」(特別是ui.panel)不可用。

希望它可以幫助:-)