2009-08-13 6 views
0

J'utilise le code suivant pour obtenir un accordéon qui se passe:jQuery accordéon: divs avec des barres de défilement ne glissant pas bien

$(".accordion h2").eq(2).addClass("active"); 
$(".accordion-content").eq(2).show(); 
$(".accordion h2").click(function(){ 
    $(this).next(".accordion-content").slideToggle("slow") 
    .siblings("div:visible").slideUp("slow"); 
    $(this).toggleClass("active"); 
    $(this).siblings("h2").removeClass("active"); 
}); 
$("div.accordion-content").hide(); 
$("h2#open").trigger('click'); 

Cependant, en cliquant sur le h2 d'affecter l'accordéon, si l'un des « accordéon contenu "divs a une barre de défilement (css mis à overflow: auto), les divs semblent se chevaucher et ne pas bien animer. Y at-il un moyen que je puisse définir "débordement: auto" pour se produire seulement après que la div est en pleine vue? Ou de toute autre manière autour de cela? Merci.

Répondre

1

Vous pourriez essayer d'utiliser l'événement changestart et change qui est déclenché avant et après l'animation. le ui.newContent devrait être le div en question.

rugueux 2 secondes démonstration here.

$('.selector').accordion({ 
    changestart: function(event, ui) { 
     ui.newContent.css('overflow' , 'hidden'); 
    }, 
    change: function(event, ui) { 
    ui.newContent.css('overflow' , 'auto'); 
    } 
}); 
+0

Merci resquare. Bien que par l'apparence de votre démo, votre accordéon s'anime tout aussi mal que le mien - il y a des chevauchements ... – lnvrt

+0

Ah ça a l'air bien en chrome, quel navigateur voyez-vous le chevauchement? – redsquare

+0

hmmm semble sombre dans FF3.5.2! – redsquare