:visible 选择器
分类:选择器 > jQuery扩展选择器 | 选择器 > 可见性筛选选择器
visible selector
描述:选择所有的可见的元素。
加入于: 1.0
jQuery( ":visible" )如果元素在document中消耗了空间,它会被视为是可见的。可见的元素,它的宽度或高度大于0。
带visibility: hidden
或者opacity: 0
的元素会被视为可见,因为它们依然在布局上占位置。
不在document中的元素会被视为隐藏元素;jQuery无法知道这个元素在被追加到document上后是否可见,因为这取决于所适用的样式。
该选择器是:hidden
选择器的对立面。因此,每个被:visibile
选中的元素都不能被:hidden
选择器选中,反之亦然。
所有的lt;select>选择器的<option>元素都会被视为隐藏元素,无论它们的选中状态如何。
在隐藏元素的动画过程中,元素被视为可见的,直到动画的终点。在显现元素的动画过程中,在动画的起点元素被视为可见的。
在jQuery 1.3.2中,如何计算:visible
有所变化。这个发布公告写了改变的详情。
其它说明
- 因为
:visible
是一个jQuery扩展,并不是CSS规范文档的一部分,使用:visible
查询,不能充分利用原生DOM的querySelectorAll()
方法来提高性能。要想在使用:visible
选择元素时获得最佳性能,请先使用一个纯CSS选择器选择元素,然后使用.filter(":visible")
作筛选。 - 过度使用这个选择器可能带来性能影响,因为它会强迫浏览器在它可以确定可见性之前重新呈现网页。
Tracking the visibility of elements via other methods, using a class for example, can provide better performance.
示例
使所有可见的div在点击后变成黄色。
<!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-1.10.2.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" ).click(function() { $( this ).css( "background", "yellow" ); }); $( "button" ).click(function() { $( "div:hidden" ).show( "fast" ); }); </script> </body> </html>
演示结果