aui-tab.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /**
  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);