>  기사  >  웹 프론트엔드  >  탭 전환 구성 요소(탭 기능) 예제 code_jquery

탭 전환 구성 요소(탭 기능) 예제 code_jquery

WBOY
WBOY원래의
2016-05-16 17:13:271421검색

댓글과 함께 코드를 직접 게시하세요.

코드 복사 코드는 다음과 같습니다.

/**
 * 简单的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);
        }
    });
});
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.