tab.js 2.2 KB

123456
  1. !function(window){"use strict";var doc=window.document,ydui={};$(window).on('load',function(){});var util=ydui.util={parseOptions:function(string){},pageScroll:function(){}(),localStorage:function(){}(),sessionStorage:function(){}(),serialize:function(value){},deserialize:function(value){}};function storage(ls){}
  2. $.fn.emulateTransitionEnd=function(duration){};if(typeof define==='function'){define(ydui);}else{window.YDUI=ydui;}}(window);!function(window){"use strict";function Tab(element,options){this.$element=$(element);this.options=$.extend({},Tab.DEFAULTS,options||{});this.init();this.bindEvent();this.transitioning=false;}
  3. Tab.TRANSITION_DURATION=150;Tab.DEFAULTS={nav:'.tab-nav-item',panel:'.tab-panel-item',activeClass:'tab-active'};Tab.prototype.init=function(){var _this=this,$element=_this.$element;_this.$nav=$element.find(_this.options.nav);_this.$panel=$element.find(_this.options.panel);};Tab.prototype.bindEvent=function(){var _this=this;_this.$nav.each(function(e){$(this).on('click.ydui.tab',function(){_this.open(e);});});};Tab.prototype.open=function(index){var _this=this;index=typeof index=='number'?index:_this.$nav.filter(index).index();var $curNav=_this.$nav.eq(index);_this.active($curNav,_this.$nav);_this.active(_this.$panel.eq(index),_this.$panel,function(){$curNav.trigger({type:'opened.ydui.tab',index:index});_this.transitioning=false;});};Tab.prototype.active=function($element,$container,callback){var _this=this,activeClass=_this.options.activeClass;var $avtive=$container.filter('.'+activeClass);function next(){typeof callback=='function'&&callback();}
  4. $element.one('webkitTransitionEnd',next).emulateTransitionEnd(Tab.TRANSITION_DURATION);$avtive.removeClass(activeClass);$element.addClass(activeClass);};function Plugin(option){var args=Array.prototype.slice.call(arguments,1);return this.each(function(){var target=this,$this=$(target),tab=$this.data('ydui.tab');if(!tab){$this.data('ydui.tab',(tab=new Tab(target,option)));}
  5. if(typeof option=='string'){tab[option]&&tab[option].apply(tab,args);}});}
  6. $(window).on('load.ydui.tab',function(){$('[data-ydui-tab]').each(function(){var $this=$(this);$this.tab(window.YDUI.util.parseOptions($this.data('ydui-tab')));});});$.fn.tab=Plugin;}(window);