DESIGN BLOGデザイン事務所の制作ブログ

【jQuery】slideToggleを使って要素をクリックで要素を表示・非表示させる

JO
株式会社ビーエムビー

「Q&A」などでよく使われる、クリックすると詳細が表示される、アコーディオンメニュー。この記事では、そのアコーディオンメニューを、jQueryのslideToggleというメソッドを使って作成する方法をご紹介します。

1、slideToggleの使用例 まずはjsの記述について

<script>
$(function($){
$('ul.qa li .question').click(function(){
$(this).toggleClass('open');
$(this).next('answer').slideToggle(150);
});
});
</script>

2、次は関連するHTMLの書き方例

<ul class="qa">
<li>
<div class="question"><span>Q.</span>お申し込み方法は?</div>
<div class="answer"><span>A.</span>クレジットカード(ご本人名義)でのご精算となります。デビットカード・プリペイドカード・現金でのお支払いはご利用いただけません。法人のお客様は請求書でのお支払も可能です。</div>
</li>
<li>
<div class="question"><span>Q.</span>お申し込み方法は?</div>
<div class="answer"><span>A.</span>クレジットカード(ご本人名義)でのご精算となります。デビットカード・プリペイドカード・現金でのお支払いはご利用いただけません。法人のお客様は請求書でのお支払も可能です。</div>
</li>
</ul>

以上、こんな感じで「question」のクラスがついたHTMLをクリックすると、
①クリックした要素($this)に、openのクラスを付与(addClass)して、矢印アイコンなどの向きを変えたりする。
②クリックした要素に隣接(直下のみ)の「answer」のクラスを持つ要素を表示する(show)。

これらの「addClass」も「show」もどっちもトグル(toggle)なので、カチカチクリックするごとに「removeClass」と「hide」を繰り返す。
その結果、質問文章をクリックしたら答えがパカッと開いて、もう一回押すと閉じる動きになってるよ。

注意したいのは、上記の記述は一度クリックした質問と答えは次の質問をクリックした時に閉じるものではなく、開きっぱなしバージョンということ。
そんな時はクリックしたもの以外「.not()」を使います。

「li.question」のとこで説明すると、「$('ul.qa li .question').not(this).removeClass('open');」こんな感じ。
questionクラスを持ったliだけど、クリックしたli.question以外からopenのクラスを除去するっていう内容です。同様にanswer側も「hide()」を使って非表示にしたら完成。正解コードはあえて書かないので、やってみて分からなければ誰か先輩に教わってください。

株式会社ビーエムビー

株式会社ビーエムビー

〒114-0031 東京都北区十条仲原1-4-8 商店街会館311 TEL&FAX:03-5948-5996

東京都北区のWEBやDTP(印刷物)のデザイン制作会社です。ホームページ制作やLP(ランディングページ)の作成、ECサイト(楽天ストアなど)の構築などのWEBデザイン、チラシ・ポスター・名刺・パンフレット・看板などの印刷物デザインに対応しています。お客様の業務形態や用途に合わせたwordpressによるCMSサイトをフルスクラッチにて構築することが可能です。お気軽にお問い合わせください。

その他の制作ブログ一覧

LINEスタンプを制作しました。たくさんのイラスト作画が大変でしたが、とても楽しい作業で納品まであっという間でした。 LINEスタンプ制作のご依頼を頂きました。 兵庫県三木市で彫刻刀の老舗メーカーとしてたくさんの彫刻刀を製造販売しているクライアントさんです。以前にホームページ制作をさせていただいたご縁からいろんなお仕事をご依頼いただいています。 そんな中でもLINEスタンプ制作のご相談をいただきました。クライアントさんのマスコットキャラクターをLINEスタンプにしたいとのこと。 何度かやったことのある仕事で… イラスト制作illustratorphotoshop
【CSS】clearfixについて clearfixとは まずclearfixとはfloatを使用する際にレイアウトが崩れないようにするものです。 floatは要素を隣に並べたり、文字を回り込ませたいときに指定するプロパティですが float(浮かせる)要素のため、次の要素が下に潜り込んでしまったりと レイアウトが崩れることがあります。 そのレイアウトを崩れないようにするのがclearfixの役目です。「 浮いた要素のバリア機能」… TECHNICWEB制作
一覧に戻る