これは、 JQueryUIのアコーディオンウィジェットのデモです。私のページに1つあり、アイテムを入れる方法(デモページに表示されているように)は次のようになります。
<div id="accordion">
<h3>Section 1</h3>
<div>
<p>
Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
</p>
</div>
<h3>Section 2</h3>
<div>
<p>
Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
suscipit faucibus urna.
</p>
</div>
<h3>Section 3</h3>
<div>
<p>
Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.
Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero
ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis
lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.
</p>
<ul>
<li>List item one</li>
<li>List item two</li>
<li>List item three</li>
</ul>
</div>
<h3>Section 4</h3>
<div>
<p>
Cras dictum. Pellentesque habitant morbi tristique senectus et netus
et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in
faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia
mauris vel est.
</p>
<p>
Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
inceptos himenaeos.
</p>
</div>
</div>
すべてのアイテムについて、次の構造があることに注意してください<h3>Title</h3><div><p>Text</p></div>
。このアコーディオンに動的に追加できるようにしたいと思います。しかし、その構造をアコーディオンに単純に追加しようとすると、機能しませんでした。Chromeコンソールを調べたところ、JQueryがあらゆる種類のクラスとプロパティをアイテムの見た目が悪い要素に追加していることがわかりました。さて、もちろんこれを解決する明白な方法は、追加する代わりに追加<h3>Title</h3>
することです
<h3 class="ui-accordion-header ui-helper-reset ui-state-default ui-accordion-header-active ui-state-active ui-corner-top ui-accordion-icons" role="tab" id="ui-accordion-lessonlist-header-0" aria-controls="ui-accordion-lessonlist-panel-0" aria-selected="true" tabindex="0"><span class="ui-accordion-header-icon ui-icon ui-icon-triangle-1-s"></span>Title</h3>
そして、他のすべての要素についても同様です。これは正常に機能するはずですが、見た目は醜く、JQueryがこれらすべてのことを実行するための優れた関数を提供してくれているのではないかと思いました。そうでない場合、誰かがこれを行うためのより厄介な方法を提案できますか?
編集:アコーディオンを再作成することを提案するすべての回答に応えて:それはおそらく上記の方法よりも良いアイデアだと思いますが、全体ではなく、必要なHTMLのブロックのみを「アコーディオン」することは可能ですアコーディオン、これはかなり大きくなる可能性がありますか?