2011-04-26 97 views
1

我創建了(通過谷歌google修改了一個源代碼概念)一個輕量級的輕量級標籤插件,工作90%令人滿意。然而,一個非常基本的關鍵因素是失蹤,這讓我有點傷心:)。Jquery標籤插件問題

我可以點擊選項卡並運行客戶端選擇代碼(回調函數)沒有問題,並已調整它做我想要的。但是,有一個邊緣案例暗指我的微弱思維過程。基本上,我希望在訪問頁面時自動選擇一個標籤頁(最後一次點擊的標籤頁索引保存在cookie中),這樣用戶上次查看的信息就會呈現給他們,而不是默認的第一個標籤。現在,我很清楚,我可以使用jquery-ui選項卡來達到這個目的,但由於幾個原因,我不會讓你厭煩你,這不是一個選項(現在! - 如果我所希望的是不可能的,那麼我可能不得不重新選擇這個選項)。

我已經把核心代碼放在我們的老朋友的招牌提琴手上,因爲它可能更容易展示我必須去的地方,再加上可以讓你們稍微調整一下。

希望你能幫上忙。這裏的鏈接:Fiddler link to plugin code and simple demo

一路走好......

回答

2

一種簡單的方式來完成,這將是以編程觸發click事件:

$tabs.find("ul li").eq(tabIndex).click(); 

下面是一個更新的例子,可自動選擇第三個選項卡:

http://jsfiddle.net/andrewwhitaker/MUPgz/4/

更新:

爲了包裹插件裏面的電話,我已經修改了它這樣的:

(function($) { 
    var activeTab; 
    var opts; 
    var methods = { 
     init: function(options) { 
      /* Snip (Previous init code) */ 
     }, 
     show: function(index) { 
      return this.each(function() { 
       $(this).find("ul li").eq(index).trigger("click"); 
      }); 
     } 
    }; 

    $.fn.tabify = function(method) { 

     if (methods[method]) { 
      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
     } 
     else if (typeof method === 'object' || !method) { 
      return methods.init.apply(this, arguments); 
     } 
    }; 
})(jQuery); 

用法:

$tabs.tabify("show", 2); 

更新例如:http://jsfiddle.net/andrewwhitaker/MUPgz/5/

+0

+1安德魯 - 這很不錯。你可以把自己的答案,如果你可以沸騰到$ tabs.show(tabIndex):-) [沒有壓力然後!!] – 2011-04-26 21:56:31

+0

@jim:你介意,如果我改變它像'$ tabs.tabify (「show」,2)'? – 2011-04-26 22:04:34

+0

安德魯 - 諾佩,與命名空間更合適,所以去吧!(順便說一句,想象一下,如果我說'是':)) – 2011-04-26 22:07:55

0

任何特殊理由不使用官方的插件?

http://jqueryui.com/demos/tabs/

+0

是的,有各種設備我們正在瞄準這意味着我們將不得不大力調整這個簡單的實現 - 就像我在我的問題中提到的那樣,太多的設計細節會讓你「陷入困境」,所以現在不是一種選擇,但看這個空間。 – 2011-04-26 21:41:20

+0

或者極其靈活輕便的jQuery工具選項卡? http://flowplayer.org/tools/tabs/index.html – 2011-04-26 21:46:14

+0

我要'哭':) - 我只是尋找一個平底船讓我實施*垃圾*工作如上詳述。但當然,我會把它看作是第二線應變。感謝您的鏈接!它看起來相當不錯,還有點沉重。但不錯 – 2011-04-26 21:48:30