手把手教你開發jquery外掛(三)
First, i want to add options to Tabs constructor like this:
var tabs = $("div.tabs").tabs({ "openEvent": "mouseover", "disabled": [1, 2], "current": 3 });
These options are borrowed from jQuery UI
Tabs:
openEvent:(String,"click") The type of event to be used for selecting a tab. disabled:(Array,[]) An array containing the position of the tabs (zero-based index) that should be disabled on initialization. current:(Number,0) Zero-based index of the tab to be selected on initialization. To set all tabs to unselected pass -1 as value.
The plugin code:
(function($) { function Tabs(tabs, panes, options) { var that = this; this.options = { "openEvent": "mouseover", "disabled": [], "current": 0 }; $.extend(this.options, options); this.tabs = tabs.removeClass("current"); this.panes = panes.hide(); this.current = this.options.current; this.openTab(this.current); this.tabs[this.options.openEvent](function() { that.openTab(that.tabs.index(this)); }); } Tabs.prototype = { openTab: function(index) { this.current = index; if (this.current !== -1 && $.inArray(this.current, this.options.disabled) === -1) { this.tabs.removeClass("current").eq(this.current).addClass("current"); this.panes.hide().eq(this.current).show(); } } }; $.fn.tabs = function(options) { var tabs = this.children("ul").find("li > a"); var panes = this.children("div"); return new Tabs(tabs, panes, options); }; });
Second, add some events to the plugin like this:
var tabs = $("div.tabs").tabs({ "openEvent": "mouseover", "disabled": [1, 2], "current": 3, "events": { "open": function(event, index) { console.log("[events-open]You click tab " + index); } } });
The plugin source code:
(function($) { function Tabs(tabs, panes, options) { var that = this; this.options = { "openEvent": "mouseover", "disabled": [], "current": 0, "events": {} }; $.extend(this.options, options); this.tabs = tabs.removeClass("current"); this.panes = panes.hide(); this.current = this.options.current; $.each(this.options.events, function(key, value) { $(that).bind(key, value); }); // Open current tab this.openTab(this.current); // Register open tab event this.tabs[this.options.openEvent](function() { that.openTab(that.tabs.index(this)); }); } Tabs.prototype = { openTab: function(index) { this.current = index; if (this.current !== -1 && $.inArray(this.current, this.options.disabled) === -1) { this.tabs.removeClass("current").eq(this.current).addClass("current"); this.panes.hide().eq(this.current).show(); $(this).trigger("open", [this.current]); } } }; $.fn.tabs = function(options) { var tabs = this.children("ul").find("li > a"); var panes = this.children("div"); return new Tabs(tabs, panes, options); }; });
The result:
[events-open]You click tab 3 [events-open]You click tab 4 [events-open]You click tab 0
Notice: In this section, we bind event to a JavaScript object not the jQuery object,
which i have mentioned in my last article.
Third, add some methods so that we can invoke like this:
tabs.bind("open", function(event, index) { console.log("[bind-open]You click tab " + index); });
Source code:
Tabs.prototype = { openTab: function(index) { // ... }, bind: function(name, fn) { $(this).bind(name, fn); } };
The result:
[events-open]You click tab 3 [events-open]You click tab 4 [bind-open]You click tab 4 [events-open]You click tab 3 [bind-open]You click tab 3 [events-open]You click tab 0 [bind-open]You click tab 0
Well, this series of tutorials has been finished. Pretty simple, isn’t it?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2819/viewspace-2800837/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 手把手教你開發jquery外掛(二)jQuery
- 手把手教你開發 MyBatis 分頁外掛MyBatis
- 深入理解jQuery外掛開發總結(三)jQuery
- 手把手教你開發微信小程式中的外掛微信小程式
- 手把手教你寫一個 VSCode 外掛VSCode
- 深入理解jQuery外掛開發總結(一)jQuery
- 掌握jQuery外掛開發,這篇文章就夠了jQuery
- Vite 實戰:手把手教你寫一個 Vite 外掛Vite
- JQuery模板外掛-jquery.tmpljQuery
- JQuery蜂巢圖外掛jQuery
- jQuery的外掛列表jQuery
- 手把手教你如何簡單使用laravel Modules寫外掛(1)Laravel
- jQuery外掛擴充套件jQuery套件
- jQuery擴充套件外掛jQuery套件
- 一篇文章,教你學會Vue CLI 外掛開發Vue
- 開發Rhino外掛
- Flutter外掛開發Flutter
- Mybatis外掛開發MyBatis
- chrome 外掛開發Chrome
- flutter 外掛開發Flutter
- VscodeIDEA開發外掛VSCodeIdea
- Webstorm 外掛開發WebORM
- Skywalking 外掛開發
- 手把手教你“開發GTA6”
- 手把手帶你開發一款提效工具--VScode外掛VSCode
- 下拉控制元件jQuery外掛控制元件jQuery
- jQuery外掛--表格隔行變色jQuery
- jquery複習之路---常用外掛jQuery
- 手寫jquery.cookie外掛jQueryCookie
- apisix~lua外掛開發與外掛註冊API
- ZBlog外掛開發檔案結構(外掛)
- VScode股票外掛開發VSCode
- Vue-外掛開發Vue
- babel外掛開發心得Babel
- eslint外掛開發教程EsLint
- babel 外掛開發案例Babel
- dlopen開發外掛庫
- Maven外掛開發教程Maven