2.5_Toggle事件與特效應用
運用<dt>和<dd>來產生垂直排列的的Q&A結構的清單,透過toggle()事件來顯示與隱藏答案的欄位,達成accordion特效的效果。
介紹要完成的範例(直式的accordion,運用toggle概念)

組成Q&A的清單,並設定css樣式
//運用<dt><dd>來達成清單式的QA結構

新增style.css,準備寫入樣式

進入console的檢視源始碼模式,寫入樣式 dt{color:red;}
//因為作者有裝google chrome外掛-autosave,可直接在瀏覽器上修改css後,直接和本機的css檔案同步

檔案style.css
可看到剛才流瀏器上修改的樣式,已經被成功寫入本機檔案了

設定<dd>的邊距樣式

設定<dt>的文字樣式、背景等樣式

<body>設寬度和置中

設定<dt>的下邊線的樣式

設定<dt>的上邊線的樣式

隱藏<dd>,及<dt>最上及最下層的邊線
隱藏所有的<dd>

連行結果,可看到所有的<dd>都隱藏了,只剩下<dt>

想將第一個<dt>的上邊線和最後一個<dt>的下邊線隱藏

運行結果,可看到第一個的邊線消失了,但是最後一個的沒有成功消失

解說last-child的概念(指定的是其parent的最下一層,所以會變成下一個<dd>隱藏)
所以需改寫成以下寫法
dt:nth-last-child(2){border-bottom:none;}

運行結果,可看到最下層的邊線消失了

打開chrome development tool,可看到目前<dd>隱藏的方式是<dd style="display:none">

如果想用class的樣式來設定隱藏的話=>style.css寫入
.hide{dispaly:none}

檔案index.html
將dd.hide()改成dd.addclass('hide');

運行結果,在chrome developer tool中,可看到<dd>的隱藏方式,被設定為class的方式了
<dd class="hide">

運用filter來過濾節點,除了第一個<dd>外,其它都隱藏

運行結果,除了第一個<dd>外,其它都隱藏

運用next()、show()、siblings()、hide()來實現滑動特效
滑過任意<dt>,出現相對應的<dd>

運行結果,成功運行

同層的<dd>通通都隱藏

運行結果,只有目標<dd>會出現,其它同層的通通隱藏

將原先有使用$(this).next的code整理為階層式的寫法

運行結果,修改後寫法後,功能一樣正確

將原先的hide()改為滑出特效slideUp()

運行結果,slideUp的滑出特效的效果

改變滑出特效的時間為2秒-slideUp(2000)

運行結果,緩慢滑出特效的效果

運用on()來指定觸動滑動事件的範圍
//觸發<dl>之下的<dt>,具階層群組觸發的敦果,好處是不用在逐一指定<dt>來觸發事件

運行結果,功能正確執行
