jQuery

Javascript,jQuery

【JS】スマホ用のQ&AページをslideToggleを使って作ってみる

2018/01/19

ここ数日、スマホページをひたすら作っています。

静的ページをゴリゴリ書いているのですが、「よくある質問」のページがやたらと長くなるのが気になり、ちょっと前にもポストした、jQuery の slideToggle を使い、ずらっと並べた質問文をクリック(タップ)したら回答部分がアコーディオン形式で表示されるようにしてみました。

この先、絶対にまた使うことだと思うので、備忘録も兼ねてのポストとします。

jQueryのSlideToggleを使ってQAページを作る

コード

HTML

QA部分のHTMLです。

[html]
<p class="question">●●●●とはなんですか?</p>
<p class="answer">●●●●とは■■■■のことです。</p>

<p class="question">●●●●はいつまで続きますか?</p>
<p class="answer">●●●●とは■■■■まで続く予定です。</p>

<p class="question">●●●●はどうすれば良いですか?</p>
<p class="answer">は■■■■して下さい。</p>
[/html]

Javascript

slideToggle部分のスクリプトです。

[js]
<script type="text/javascript">
$(function(){
$("p.answer").hide();
$("p.question").click(function(){
$(this).next().slideToggle("slow");
});
});
</script>
[/js]

簡単な解説

まず、 $("p.answer").hide(); 部分で、<p class"answer">***</p> 部分を hide、つまり隠します。

$(this).next().slideToggle("slow"); の、$(this) はクリックされる(された)<p class"question">***</p> が代入されます。

続きの .next().slideToggle("slow"); は $(this) に代入されている次の要素である、<p class"answer">***</p> 部分が slideToggle される、ということになります。

このルーチン1つで同じページに何個もアコーディオンさせたい箇所があっても、クリックした要素(トリガー)の次の要素だけが実行されます。

うーむ、便利!

-Javascript,jQuery
-,