Skip to content

jQuery 顯示與隱藏:show()、hide() 與 toggle()

jQuery 顯示、隱藏與切換:show、hide、toggle

以 CSS 的 display 屬性控制顯示與否,是 jQuery 動態效果 中最基本的一組方法。

show()

指定 DOM 進行顯示。

js
show(duration, complete);

參數

功能說明型別範例
duration效果的速度StringNumber'slow''fast'400
complete結束後的執行事項Functionfunction() {}

範例

html
<div id="Dom" style="display: none">DOM</div>
<button id="Btn">顯示</button>
js
$('#Btn').on('click', function () {
  $('#Dom').show(400, function () {
    console.log('顯示完成');
  });
});

hide()

指定 DOM 進行隱藏。

js
hide(duration, complete);

參數

與前述相同。

隱藏之後不佔位置

hide() 是把 display 設為 none ,元素會完全從排版中移除。若只是想讓元素看不見但保留位置,請改用 fadeTo() 調整不透明度。

toggle()

指定 DOM 進行顯示與隱藏的切換。它依元素當下的狀態決定要顯示還是隱藏,很適合做開關型的互動。

js
toggle(duration, complete);

參數

與前述相同。

範例

html
<div id="Dom">DOM</div>
<button id="Btn">切換</button>
js
$('#Btn').on('click', function () {
  $('#Dom').toggle('fast');
});

常見問題

hide 之後元素還佔位置嗎?

不會。它是把 CSS 的 display 設為 none,元素會完全從排版中移除,不再佔用空間。若只想讓元素看不見但保留位置,應該改用不透明度。

duration 可以填哪些值?

可以填毫秒數,也可以填 'slow''fast' 這兩個關鍵字,分別對應 600 與 200 毫秒。省略時使用預設的 400 毫秒;填 0 則會立即完成,沒有動畫過程。

complete 什麼時候執行?

動畫完全結束後才執行,因此常用來接續下一段流程,例如:動畫播完之後才移除元素或送出資料。

toggle 怎麼判斷該顯示還是隱藏?

它依元素當下的顯示狀態決定:目前看得見就隱藏,目前是隱藏就顯示,因此很適合做開關型的互動。

show 和 fadeIn、slideDown 差在哪?

三者都會讓元素現身,但過場不同。show() 同時改變尺寸與不透明度,fadeIn() 只改不透明度,slideDown() 則是改變高度。

延伸閱讀

參考資料:jQuery API:Effects