blob: cb228c4dd45a392d0d4d53482dbafacbd05c03cb [file] [log] [blame]
qiaoweif044a742019-07-10 16:04:20 +08001/**
2 * aui-tab.js
3 * @author 流浪男
4 * @todo more things to abstract, e.g. Loading css etc.
5 * Licensed under the MIT license.
6 * http://www.opensource.org/licenses/mit-license.php
7 */
8(function( window, undefined ) {
9 "use strict";
10 var auiTab = function(params,callback) {
11 this.extend(this.params, params);
12 this._init(callback);
13 };
14 var tabItems;
15 auiTab.prototype = {
16 params: {
17 element: false,
18 index: 1, //默认选中
19 repeatClick: false //是否允许重复点击
20 },
21 _init: function(callback) {
22 var self = this;
23 if(!self.params.element || self.params.element.nodeType!=1){
24 return;
25 }
26 tabItems = self.params.element.children;
27 if(tabItems){
28 self.setActive();
29 for(var i=0; i<tabItems.length; i++){
30 tabItems[i].setAttribute("tapmode","");
31 tabItems[i].setAttribute("data-item-order",i);
32 tabItems[i].onclick = function(e){
33 if(!self.params.repeatClick){
34 if(this.className.indexOf("aui-active") > -1)return;
35 }
36 if(callback){
37 callback({
38 index: parseInt(this.getAttribute("data-item-order"))+1,
39 dom:this
40 })
41 };
42 this.parentNode.querySelector(".aui-active").classList.remove("aui-active");
43 this.classList.add("aui-active");
44 }
45 }
46 }
47 },
48 setRepeat:function(value){
49 var self = this;
50 self.params.repeatClick = value ? value : false;
51 },
52 setActive: function(index){
53 var self = this;
54 index = index ? index : self.params.index;
55 var _tab = tabItems[index-1];
56 if(_tab.parentNode.querySelector(".aui-active"))_tab.parentNode.querySelector(".aui-active").classList.remove("aui-active");
57 _tab.classList.add("aui-active");
58 },
59 extend: function(a, b) {
60 for (var key in b) {
61 if (b.hasOwnProperty(key)) {
62 a[key] = b[key];
63 }
64 }
65 return a;
66 }
67 };
68 window.auiTab = auiTab;
69})(window);