简单灵活的jquery的tab选项卡插件

/*
 * ====== 功能简单的选项卡插件 =====
 *  author: Jim
 *      QQ: 307083215
 * version: 3.5 | 2013.12.26
 * =================================
*/

/*---------------------------------
使用示例:

$(".tab").tab({
    card: ".tab-card",
    panel: ".tab-panel",
    highlight: "tab-curCard",    // 注意:类名不带"."

    // 切换成功后执行回调函数, 参数:当前的pannel 和 它在同辈中的索引位置
    callback: function(panel, index){ 

        //这里的this指向 .tab对象

        var img = panel.find('img');
        var src = img.attr('src'),
            source = img.data('src');

        src !== source && img.attr('src', source);

        // do more... 

    }
});

--------------------------------------*/

;(function($){ 


$.fn.tab = function(options){

    var settings = $.extend({
        card: ".tab-card",
        panel: ".tab-panel",
        eType: "mouseover",
        highlight: "tab-curCard",
        speed: 0,
        callback: function (curPanel, index, curCard) { }
    }, options || {});

    this.each(function(){
            var tab   = $(this),
                card  = $(settings.card).filter(function(i){
                    return !!$(this).closest(tab).length;
                }),
                panel = $(settings.panel).filter(function(i){
                    return !!$(this).closest(tab).length;
                }),
                done  = true;    //  切换完成与否


            card[settings.eType](function(){

                    if ( !done || $(this).hasClass(settings.highlight) ) 
                        return;

                    tab.trigger('tabChange', $(this).index());
            });

            tab.on('tabChange', function(e, i){    // 自定义事件

                done = false;

                var curCard = card.eq(i),
                    curPanel = panel.eq(i);

                card.filter('.' + settings.highlight).removeClass(settings.highlight);
                curCard.addClass(settings.highlight);

                panel.filter(':visible').fadeOut(settings.speed, function(){

                    curPanel.fadeIn(settings.speed, function(){
                        settings.callback.apply(tab, [curPanel, i, curCard]);
                        done = true;
                    });

                });
            });
    });

    return this;
};

})(jQuery);

//推荐的html结构
// <div class="tab">
//       <ul class="tab-nav">
//           <li class="tab-card tab-curCard"><a href="javascript:;">card1</a></li>
//           <li class="tab-card"><a href="javascript:;">card2</a></li>
//           <li class="tab-card"><a href="javascript:;">card3</a></li>
//       </ul>
//       <div class="tab-cont">
//           <div class="tab-panel" style="display: block;">panel1</div>
//           <div class="tab-panel" style="display: none;">panel2</div>
//           <div class="tab-panel" style="display: none;">panel3</div>
//       </div>
// </div>

 

转载于:https://www.cnblogs.com/MyNameIsJim/p/jQuery-tab-plugin.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值