0

次のコードを使用して、アコーディオンを発生させています。

$(".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');

ただし、h2 をクリックしてアコーディオンに影響を与える場合、「accordion-content」div の 1 つにスクロールバー (css が overflow:auto に設定されている) がある場合、div はオーバーラップしているように見え、うまくアニメーション化されません。div が完全に表示された後にのみ「overflow:auto」が発生するように設定する方法はありますか? または、これを回避する他の方法はありますか?ありがとう。

4

1 に答える 1

1

アニメーションの前後に発生する changestart および change イベントを使用してみてください。ui.newContent は問題の div である必要があります。

おおまかな2秒のデモはこちら。

$('.selector').accordion({
   changestart: function(event, ui) {
       ui.newContent.css('overflow' , 'hidden');
   },
   change: function(event, ui) { 
     ui.newContent.css('overflow' , 'auto');
   }
});
于 2009-08-13T08:38:06.587 に答える