【问题标题】:jQuery tabs - multiple sets on on pagejQuery 选项卡 - 页面上的多个集合
【发布时间】:2010-07-05 08:23:52
【问题描述】:

这是我之前发布的问题的后续,但我无法让它工作..

我正在尝试在一个页面上使用多组选项卡 (jQuery)。

这是我的一组标签的代码,效果很好:

$('div.tabs div.tab').hide();
$('div.tabs div:first').show();
$('div.tabs ul.htabs li:first a').addClass('current');
$('div.tabs ul.htabs li a').click(function(){
    $('div.tabs ul.htabs li a').removeClass('current');
    $(this).addClass('current');
    var currentTab = $(this).attr('href');
    $('div.tabs div.tab').hide();
    $(currentTab).show();
    return false;
});

为了在页面上使用多个集合,我为每个选项卡集分配了#id,并尝试通过以下方式实现这一点:

$.each(['#tabs-1', '#tabs-2', '#tabs-3' ], function(id) {
    $(id + 'div.tab').hide();
    $(id + 'div:first').show();
    $(id + 'ul.htabs li:first a').addClass('current');
    $(id + 'ul.htabs li a').click(function(){
        $(id + 'ul.htabs li a').removeClass('current');
        $(this).addClass('current');
        var currentTab = $(this).attr('href');
        $(id + 'div.tab').hide();
        $(currentTab).show();
        return false;
    });
});

显然我在这里做错了,但作为一个 jQuery 新手,我被难住了!

【问题讨论】:

    标签: jquery tabs jquery-tabs


    【解决方案1】:

    好的,所以即使代码中的间距正确,这也无法正常工作,但我发现了一个更轻量级的解决方案,它可以完美运行 - jQuery MiniTabs:

    /*
     * jQuery MiniTabs 0.1 - http://code.google.com/p/minitabs/
     */
    jQuery.fn.minitabs = function(speed,effect) {
      var id = "#" + this.attr('id')
      $(id + ">div:gt(0)").hide();
      $(id + ">ul>li>a:first").addClass("current");
      $(id + ">ul>li>a").click(
        function(){
          $(id + ">ul>li>a").removeClass("current");
          $(this).addClass("current");
          $(this).blur();
          var re = /([_\-\w]+$)/i;
          var target = $('#' + re.exec(this.href)[1]);
          var old = $(id + ">div");
          switch (effect) {
            case 'fade':
              old.fadeOut(speed).fadeOut(speed);
              target.fadeIn(speed);
              break;
            case 'slide':
              old.slideUp(speed);  
              target.fadeOut(speed).fadeIn(speed);
              break;
            default : 
              old.hide(speed);
              target.show(speed)
          }
          return false;
        }
     );
    }
    

    使用此代码,您可以添加:

    $('#tabs-1').minitabs();
    $('#tabs-2').minitabs();
    $('#tabs-3').minitabs();
    

    一切都完美无缺!

    【讨论】:

      【解决方案2】:
      $(id + 'div.tab').hide();
      

      id 和 'div.tab' 之间不是缺少空格吗?这将评估为"#tabs-1div.tab"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多