2010-01-04 12 views
0

je ce bloc très basique à onglets:effet de fondu onclick (jQuery)

$('.tabbed-section .panel').hide(); 
$('.tabbed-section .panel:first').show(); 
$('.tabbed-section .tabs li:first').addClass('active'); 
$('.tabbed-section .tabs li a').click(function() { 
    $('.tabbed-section .tabs li').removeClass('active'); 
    $(this).parent().addClass('active'); 
    var currentTab = $(this).attr('href'); 
    var tab_id = $(this).attr('href'); 
    $(this).closest('#hero').attr('class', 'clear ' + tab_id.replace('#', '')); 
    $('.tabbed-section .panel').hide(); 
    $(currentTab).show(); 
    return false; 
}); 

.. il fonctionne très bien, mais je peux ajouter un effet fondu lorsque l'onglet change actif? Je pense qu'il y a un plugin (innerfade) pour ça mais je veux éviter d'utiliser un autre plugin si possible.

De plus, le jQuery ci-dessus peut-il être compacté davantage?

Merci pour votre aide!

Répondre

1

Au lieu de

$('.tabbed-section .panel').hide(); 
$(currentTab).show(); 

do

$('.tabbed-section .panel').fadeOut(); 
$(currentTab).fadeIn(); 

?

+1

Vous ne voulez probablement pas faire cela car ils vont faire leurs animations en même temps et cela va probablement casser la mise en page car ils seront tous les deux visibles pendant un certain temps. Mieux vaut utiliser le callback de fin du fadeOut, IMO. – rfunduk

+0

Cela fonctionne très bien, en fait, le code thenduks casser la mise en page pour une fraction de seconde. – 3zzy

1

Que pensez-vous de cela?

$('.tabbed-section') 
    .find('.panel').hide().end() 
    .find('.panel:first').show().end() 
    .find('.tabs li:first').addClass('active').end() 
    .find('.tabs li a').click(function() { 
    var el = $(this); 
    $('.tabbed-section .tabs li').removeClass('active'); 
    el.parent().addClass('active'); 
    var currentTab = el.attr('href'); 
    el.closest('#hero').attr('class', 'clear ' + currentTab.replace('#', '')); 
    $('.tabbed-section .panel').fadeOut('fast', function() { 
     $(currentTab).fadeIn('fast'); 
    }); 
    return false; 
    }); 
+0

Merci, cela fonctionne presque, juste 2 choses 1) les effets de fondu salissent les éléments du bas sur la page pour une fraction de seconde et 2) 3ème et 4ème onglet toujours «clignoter» deux fois, 1er et 2ème pas. – 3zzy

+0

Bon, eh bien vous n'avez pas fourni de balisage, donc il m'est pratiquement impossible d'expérimenter ... Pour que cela soit correct, il faut généralement faire ça, expérimenter. Si vous exécutez les animations en même temps, vous ne devez pas interrompre votre mise en page pour quelque raison que ce soit, alors faites-le par tous les moyens. – rfunduk

Questions connexes