2009-06-07 17 views
0

最近、横型アコーディオンを作る必要があります。jQuery Horizo​​ntalアコーディオンとアニメーションの問題

カラーボックスをクリックすると、右側にカラーボックスの小さな「ジャンプ」があることがわかります。小さなジャンプがなぜ起こるのか分かりません。

次に、hideとshowの代わりにanimateを使用して問題を解決しようとします。

幅が0pxにアニメーション化されても、要素にはまだ数ピクセルしかないので、アニメーションの後に隠すようにします。しかし、hide()関数は何もしません。どうして?

デバッグ中に、アニメーションが終了する直前にアラート(「良い」)が実行されることがわかりました。どうして?

私の質問にお答えいただきありがとうございます。ここで

はコードです:

<html> 
<head> 
<style type="text/css"> 
.accordion { padding: 3px; margin: 0px; float: left; width: 300px;} 
.accordionTitle { cursor: pointer; padding: 3px; margin: 0px; float: left;width:20px; height:150px; } 
.clearBoth { clear: both; } 
</style> 
<script src="jquery-1.3.2.min.js"></script> 
<script type="text/javascript" > 
$(function() { 
    var elementToTransform = ".accordion" 
    $(elementToTransform).hide(); 
    var currentAccordionPanel = ($(".currentAccordionPanel").show())[0]; 
    $(".accordionTitle").click(function() { 
     if ($(this).next(elementToTransform)[0] != currentAccordionPanel) 
      { 
       $(currentAccordionPanel).hide(400); 
       $(this).next(elementToTransform).show(400); 
       /*$(currentAccordionPanel).animate({width:"0px"},{duration:200,queue:false},{},function(){alert("good")}); 
       $(this).next(elementToTransform).animate({width:"300px"},{duration:200,queue:false}); 
         $(currentAccordionPanel).hide(); // the element still has few pixels even width animates to 0, so I hide it 
*/ 
       currentAccordionPanel = $(this).next(elementToTransform)[0]; 
      } 

    }) 
}); 
</script> 
</head> 
<body> 
<div style="width:800px;"> 
    <div id="cat1"> 
     <div class="accordionTitle" style="background:blue">1</div> 
     <div class="accordion currentAccordionPanel" id="p1">content 1</div> 
    </div> 
    <div id="cat2"> 
     <div class="accordionTitle" style="background:red">2</div> 
     <div class="accordion" id="p2">content 2</div> 
    </div> 
    <div id="cat3"> 
     <div class="accordionTitle" style="background:yellow">3</div> 
     <div class="accordion" id="p3">content 3</div> 
    </div> 
    <div id="cat4"> 
     <div class="accordionTitle" style="background:green">4</div> 
     <div class="accordion" id="p4">content 4</div> 
    </div> 
    <div id="cat5"> 
     <div class="accordionTitle" style="background:red">5</div> 
     <div class="accordion" id="p5">content 5</div> 
    </div> 
    <div class="clearBoth"></div> 
</div> 
</body> 
</html> 

答えて

0

私はあなたがアコーディオンとaccordionTitleクラスに次のスタイルを追加することをお勧めしたい:

overflow:hidden; 

少なくとも幅の問題を解決するだろうことはありませんゼロになる。

関連する問題