「折りたたまれた」アイテムが各アイテム内のテキストの最初の行を表示する、jQuery を使用してカスタム アコーディオン効果を作成しようとしています。ユーザーがアイテムの 1 つをクリックすると、アニメーション化されて全文が表示されます。通常のアコーディオンとまったく同じように機能しますが、テキストの小さなプレビューが必要です。
私のスクリプトはほぼ完成していますが、まだいくつかの問題があります。
- アイテムが既にアクティブで再度クリックされた場合、アイテムは折りたたまれるべきではありません。
- アニメーションは次々に発生しますが、同時に発生させたいと思います。
スクリプトを完了するにはどうすればよいですか?
これが私のコードとjfiddleです:
<ul>
<li>
<span>Item 1</span>
<div>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
</div>
</li>
<li>
<span>Item 2</span>
<div>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
</div>
</li>
<li>
<span>Item 3</span>
<div>
<p>At vero eos et accusam et justo duo dolores et ea rebum. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
</div>
</li>
</ul>
<script type="text/javascript">
$("span").click(function(){
var h = $(this).siblings("div").find("p").height();
$("ul li div").animate({height:"20px"}, 100);
if( !$(this).hasClass("active") ){
$(this).addClass("active");
$(this).siblings("div").animate({height: h+10 + "px"}, 200);
}
});
</script>