:visible Selector
Selects all elements that are visible.
.visible()
Elements are considered visible if they consume space in the document. Visible elements have a width or height that is greater than zero.
Elements with visibility: hidden
or opacity: 0
are considered visible, since they still consume space in the layout.
Elements that are not in a document are considered hidden; jQuery does not have a way to know if they will be visible when appended to a document since it depends on the applicable styles.
This selector is the opposite of the :hidden
selector. So, every element selected by :visible
isn't selected by :hidden
and vice versa.
All option
elements are considered hidden, regardless of their selected
state.
During animations that hide an element, the element is considered visible until the end of the animation. During animations to show an element, the element is considered visible at the start at the animation.
How :visible
is calculated was changed in jQuery 1.3.2. The release notes outline the changes in more detail.
jQuery 3 slightly modifies the meaning of :visible
(and therefore of :hidden
). Starting with this version, elements will be considered :visible
if they have any layout boxes, including those of zero width and/or height. For example, br
elements and inline elements with no content will be selected by the :visible
selector.
Make all visible divs turn yellow on click.
<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>
div {
width: 50px;
height: 40px;
margin: 5px;
border: 3px outset green;
float: left;
}
.starthidden {
display: none;
}
$("div:visible").click(function () {
$(this).css("background", "yellow");
});
$("button").click(function () {
$("div:hidden").show("fast");
});