Use the jQuery :visible
and :hidden
Selector
You can simply use the jQuery :visible
or :hidden
selector to select all the visible or hidden elements in an HTML page. The jQuery :visible
selector considered an element visible if they consume space in the document. That means, elements with visibility: hidden;
or opacity: 0;
are considered visible, since they still preserve space in the layout.
Let's try out the following example to understand how this basically works:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery Get All Visible and Hidden Elements</title>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<style>
.box{
padding: 50px;
margin: 20px 0;
display: inline-block;
font: bold 22px sans-serif;
background: #f4f4f4;
}
.hidden{
display: none;
}
</style>
<script>
$(document).ready(function() {
// Get visible boxes
$(".get-visible-btn").click(function(){
var visibleBoxes = [];
$.each($(".box"), function(){
if($(this).is(":visible")) {
visibleBoxes.push($(this).text());
}
});
alert("Visible boxes are - " + visibleBoxes.join(", "));
});
// Get hidden boxes
$(".get-hidden-btn").click(function(){
var hiddenBoxes = [];
$.each($(".box"), function(){
if($(this).is(":hidden")) {
hiddenBoxes.push($(this).text());
}
});
alert("Hidden boxes are - " + hiddenBoxes.join(", "));
});
});
</script>
</head>
<body>
<div class="box">Box A</div>
<div class="box hidden">Box B</div>
<div class="box">Box C</div>
<div class="box hidden">Box D</div>
<div class="box">Box E</div>
<br>
<button type="button" class="get-visible-btn">Get Visible Boxes</button>
<button type="button" class="get-hidden-btn">Get Hidden Boxes</button>
</body>
</html>