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サイトをフルスクラッチにて構築することが可能です。お気軽にお問い合わせください。

その他の制作ブログ一覧

ラグビー団体のホームページ制作のコーディングを担当しました! 他社デザイナーさんより、WordPresサイトのコーディングの依頼をいただきました。 デザイナーさんにいただいたデザインをもとに、WordPressサイトの構築をしました。クライアントは非常に多くの会員さんを抱えた歴史のあるラグビー団体です。 お客様が管理画面から操作・更新しやすいサイトへ 今回のクライアントはスポーツ団体なので、スケジュールや試合結果の更新が頻繫にあることが予想されてい… WEB制作wordpressCSSHTMLjavascriptPHP
名入れノベルティバッグを制作しました! 名入れノベルティバッグのご依頼を頂きました。 埼玉県新座市の不動産会社さまからのご依頼で、社名入りの手提げ袋を制作しました。 以前使っていたものを使い切ってしまったので、新しいデザインで作りたい!ということで、これまで使用されていたもののデザインと雰囲気が変わるようなデザインを目指しました。 主に営業の方が資料を入れるのに使ったり、お客様にお渡しするノベルティグッズを入れたり...といった用… DTPillustrator
LINEスタンプを制作しました。たくさんのイラスト作画が大変でしたが、とても楽しい作業で納品まであっという間でした。 LINEスタンプ制作のご依頼を頂きました。 兵庫県三木市で彫刻刀の老舗メーカーとしてたくさんの彫刻刀を製造販売しているクライアントさんです。以前にホームページ制作をさせていただいたご縁からいろんなお仕事をご依頼いただいています。 そんな中でもLINEスタンプ制作のご相談をいただきました。クライアントさんのマスコットキャラクターをLINEスタンプにしたいとのこと。 何度かやったことのある仕事で… イラスト制作illustratorphotoshop
一覧に戻る