Home  >  Article  >  Web Front-end  >  Tab switching component (tab function) example code_jquery

Tab switching component (tab function) example code_jquery

WBOY
WBOYOriginal
2016-05-16 17:13:271379browse

Post the code directly with comments:

Copy code The code is as follows:

/**
 * 简单的Tab切换
 * 支持可配置项 如下参数
 */
    function Tab(){
        this.config = {
            type            : 'mouseover',    //类型 默认为鼠标移上去
            autoplay        : true,           // 默认为自动播放
            triggerCls      : '.list',        // 菜单项
            panelCls        : '.tabContent',  // 内容项
            index           : 0,              // 当前的索引0
            switchTo        : 0,              // 切换到哪一项
            interval        : 3000,              // 自动播放间隔时间 默认为3 以s为单位
            pauseOnHover    : true,           // 鼠标放上去是否为暂停 默认为true
            current         : 'current',      // 当前项添加到类名
            hidden          : 'hidden',       // 类名 默认为hidden
            callback        : null            // callback函数
        };

        this.cache = {
            timer : undefined,
            flag  : true
        };
    }

    Tab.prototype = {

        init: function(options){
            this.config = $.extend(this.config,options || {});
            var self = this,
                _config = self.config;
            self._handler();
        },
        _handler: function(){
            var self = this,
                _config = self.config,
                _cache = self.cache,
                len = $(_config.triggerCls).length;
            $(_config.triggerCls).unbind(_config.type);
            $(_config.triggerCls).bind(_config.type,function(){
                _cache.timer && clearInterval(_cache.timer);
                var index = $(_config.triggerCls).index(this);
                !$(this).hasClass(_config.current) &&
                $(this).addClass(_config.current).siblings().removeClass(_config.current);
                $(_config.panelCls).eq(index).removeClass(_config.hidden).siblings().addClass(_config.hidden);

                // 切换完 添加回调函数
                _config.callback && $.isFunction(_config.callback) && _config.callback(index);
            });

            // 默认情况下切换到第几项
            if(_config.switchTo) {
                $(_config.triggerCls).eq(_config.switchTo).addClass(_config.current).siblings().removeClass(_config.current);
                $(_config.panelCls).eq(_config.switchTo).removeClass(_config.hidden).siblings().addClass(_config.hidden);
            }

            // 自动播放
            if(_config.autoplay) {
               start();
               $(_config.triggerCls).hover(function(){
                   if(_config.pauseOnHover) {
                      _cache.timer &&clearInterval(_cache.timer);
                      _cache.timer = 정의되지 않음;
                    }else {
                      return;
                  }
              },function(){
start();
                });
            }
            function start(){
              _cache.timer = setInterval(autoRun,_config.interval);
            }
            함수 autoRun() {
               if(_config.switchTo && (_config.switchTo == len-1)){
                 if(_cache.flag) {
                     _config.index = _config.switchTo;
                       _cache.flag = false ;
                  }
               }
              _config.index ;
               if(_config.index == len) {
                    _config.index = 0;
               }
               $(_config.triggerCls ).eq(_config.index).addClass(_config.current).siblings().removeClass(_config.current);
               $(_config.panelCls).eq(_config.index).removeClass(_config.hidden) .siblings().addClass(_config.hidden);

            }
        }
    };

页side上调사용방법式如下:

复主代码 代码如下:

$(function(){
    새 탭( ).init({
        switchTo: 1,
        콜백: function(index){
            console.log(index);
        }
    });
});
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn