少し助けが必要です。まだjQueryの初心者です...私は製品パッケージの比較表を持っています。最初の列には関数が含まれています。関数をクリックすると、関数が開き、アコーディオンスタイルで関数の説明が表示され、アクティブなアコーディオンヘッダーとして関数名が太字になります(クラス'active'が追加されます)。デフォルトでは、すべてのアコーディオンが閉じています。同時に開くアコーディオンは1つだけにしたいので、訪問者が別のアコーディオンをクリックすると、前のアコーディオンが自動的に閉じます。私はこの作品を作りました。アコーディオンヘッドをもう一度クリックして閉じると、すぐに再び開くので問題が発生しますが、アクティブなクラスが削除されます。開いた1つのアコーディオンをすぐに再び開かずに閉じるにはどうすればよいですか(ifステートメントについて考えましたが、どのように機能させるかはわかりません...)?
これがhtmlです:
<tr>
<td><div class="accordion"><h4><a href="javascript:(void)">Accordion head</a></h4><div class="module-desc">Service description</div></div></td>
<td><img src="assets_wm/images/someimg.png" alt="pipa" /></td>
<td><img src="assets_wm/images/simeimg.png" alt="pipa" /></td>
<td><img src="assets_wm/images/someimg.png" alt="pipa" /></td>
</tr>
<tr>
<td><div class="accordion"><h4><a href="javascript:(void)">Accordion head</a></h4><div class="module-desc">Service description</div></div></td>
<td><img src="assets_wm/images/someimg.png" alt="pipa" /></td>
<td><img src="assets_wm/images/someimg.png" alt="pipa" /></td>
<td><img src="assets_wm/images/someimg.png" alt="pipa" /></td>
</tr>
<tr>
<td><div class="accordion"><h4><a href="javascript:(void)">Accordion head</a></h4><div class="module-desc">Service description</div></div></td>
<td><img src="assets_wm/images/someimg.png" alt="pipa" /></td>
<td><img src="assets_wm/images/someimg.png" alt="pipa" /></td>
<td><img src="assets_wm/images/someimg.png" alt="pipa" /></td>
</tr>
jQueryコードは次のとおりです。
$(document).ready(function(){
$(".module-desc").hide();
$(".accordion h4").click(function(){
$(".accordion").find(".module-desc").hide("fast");
var thisBlock = $(this).parent().index('.accordion');
$(".accordion").find(".active").not($(this)).removeClass("active");
$(this).toggleClass("active").next().slideToggle("fast");
$(this).parent().toggleClass("activeToggle").siblings()
.removeClass("activeToggle").children(".module-desc").hide("fast");
return false;
});
});
JsFiddleリンク: http ://jsfiddle.net/5QT6A/ サービスの説明のみを非表示にする必要があります。アコーディオンが閉じた後でも、画像は表示されたままである必要があります。