:visible 選擇器


visible 選擇器

說明:選取所有可見的元素。

  • 新增版本:1.0jQuery( ":visible" )

如果元素在文件中佔用空間,則會被視為可見。可見元素的寬度或高度大於零。

具有 visibility: hiddenopacity: 0 的元素會被視為可見,因為它們仍然會在版面中佔用空間。

不在文件中的元素會被視為隱藏;jQuery 無法得知將它們附加到文件時是否會可見,因為這取決於適用的樣式。

此選擇器與 :hidden 選擇器相反。因此,由 :visible 選取的每個元素都不會由 :hidden 選取,反之亦然。

所有 option 元素都視為隱藏,無論其 selected 狀態為何。

在隱藏元素的動畫期間,該元素會被視為可見,直到動畫結束。在顯示元素的動畫期間,該元素會在動畫開始時被視為可見。

:visible 的計算方式在 jQuery 1.3.2 中有所變更。發布說明 中更詳細地說明了變更內容。

jQuery 3 略微修改了 :visible(因此也修改了 :hidden)的意義。從此版本開始,如果元素有任何版面方塊(包括寬度和/或高度為零的方塊),則會被視為 :visible。例如,br 元素和沒有內容的內嵌元素將會被 :visible 選擇器選取。

其他注意事項

  • 由於 :visible 是 jQuery 擴充功能,而非 CSS 規格的一部分,因此使用 :visible 的查詢無法利用原生 DOM querySelectorAll() 方法提供的效能提升。若要使用 :visible 選取元素時達到最佳效能,請先使用純 CSS 選擇器選取元素,然後使用 .filter(":visible")
  • 大量使用此選擇器可能會對效能造成影響,因為它可能會強制瀏覽器在判斷可見性之前重新呈現頁面。透過其他方法追蹤元素的可見性(例如使用類別),可以提供更好的效能。

範例

讓所有可見的 div 在點擊時變為黃色。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>visible demo</title>
<style>
div {
width: 50px;
height: 40px;
margin: 5px;
border: 3px outset green;
float: left;
}
.starthidden {
display: none;
}
</style>
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
<button>Show hidden to see they don't change</button>
<div></div>
<div class="starthidden"></div>
<div></div>
<div></div>
<div style="display:none;"></div>
<script>
$( "div:visible" ).on( "click", function() {
$( this ).css( "background", "yellow" );
} );
$( "button" ).on( "click", function() {
$( "div:hidden" ).show( "fast" );
} );
</script>
</body>
</html>

示範