2010-05-31 50 views
1

上这是种从以前的问题,我发布的遵循,但我没有能够得到它的工作..jQuery的标签 - 多组上

我试图用多套的标签(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对每个选项卡设置和页面上试图与以impliment此:

$.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新手我很难过!

回答

2

好,所以这是不与代码正确的间距甚至工作,但我已经找到了更轻质的解决方案,它完美的作品 - 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(); 

一切都很完美!

1
$(id + 'div.tab').hide(); 

id和'​​div.tab'之间没有空格吗?这将评估为"#tabs-1div.tab"

+0

啊是的。但是,即使纠正这一点也没有奏效。 – 2010-05-31 17:23:54