123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- !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) {}
- $.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;
- }
- 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();
- }
- $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)));
- }
- if (typeof option == 'string') {
- tab[option] && tab[option].apply(tab, args);
- }
- });
- }
- $(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);
|