<ul>
<li class="pref"><a href="#">miyagia>li>
<li class="city"><a href="#">sendaia>li>
<li class="city"><a href="#">kesennumaa>li>
<li class="city"><a href="#">ishinomakia>li>
<li class="city"><a href="#">onagawaa>li>
<li class="pref"><a href="#">iwatea>li>
<li class="city"><a href="#">miyakoa>li>
<li class="city"><a href="#">rikuzentakadaa>li>
<li class="pref"><a href="#">fukushimaa>li>
<li class="city"><a href="#">soumaa>li>
ul>
$("li.pref").click(accordion); // (1)
function accordion(e) {
var $this = $(this);
if (!$this.hasClass("opened")) { // (2)
$("li.opened").removeClass("opened").nextUntil(".pref").slideUp(); // (3)
$this.addClass("opened").nextUntil(".pref").slideDown(); // (4)
} else { // (5)
$this.removeClass("opened").nextUntil(".pref").slideUp(); // (6)
}
e.preventDefault(); // (7)
}
(1):「pref」クラスを持つli要素がクリックされると、accordion関数が実行される。
(2):クリックされたli要素が「opened」クラスを持っていなければ、
(3):「opened」クラスを持つli要素から「opened」クラスを取り除き、このli要素と次に現れる「pref」クラスを持つli要素との間にあるli要素をslideUpする。
(4):クリックされたli要素に「opened」クラスをつけ、このli要素と次に現れる「pref」クラスを持つli要素との間にあるli要素をslideDownする。
(5):クリックされたli要素が「opened」クラスを持っていれば、
(6):クリックされたli要素から「opened」クラスを取り除き、このli要素と次に現れる「pref」クラスを持つli要素との間にあるli要素をslideUpする。
(7):li直下にあるa要素にデフォルトでセットされているイベント(他ページへのジャンプ)を実行させない。