:hidden 选择器
分类:选择器 > jQuery扩展选择器 | 选择器 > 可见性筛选选择器
hidden selector
描述:选择所有隐藏的元素。
加入于: 1.0
jQuery( ":hidden" )元素可能因为几种原因而被视为隐藏:
- 它们具有CSS属性
display: none
。 - 它们是表单元素,且
type="hidden"
。 - 它们的宽度和高度被显式地设置为0。
- 一个祖先元素被隐藏了,所以元素也不显示在网页上。
带visibility: hidden
或者opacity: 0
的元素会被视为可见,因为它们依然在布局上占位置。在隐藏一个元素的动画过程中,元素会被视为可见,直到结束动画。
不在document上的元素不会被视为可见;jQuery无法知道这个元素在被追加到document上后是否可见,因为这取决于所适用的样式。
该选择器是:visible
选择器的对立面。因此,每个被:hidden
选中的元素都不能被:visibile
选择器选中,反之亦然。
在显现元素的动画过程中,在动画的起点元素被视为可见的。
在jQuery 1.3.2中,:hidden
的定义有所改变。一个元素如果它或它的父元素不在文档中占位置,它被假定为隐藏。CSS的属性visibility
不记入内(因此$( elem ).css( "visibility", "hidden" ).is( ":hidden" ) == false
)。jQuery 1.3.2发布公告详细地讲解了这个改变。
其它说明
- 因为
:hidden
是一个jQuery扩展,并不是CSS规范文档的一部分,使用:hidden
查询,不能充分利用原生DOM的querySelectorAll()
方法来提高性能。要想在使用:hidden
选择元素时获得最佳性能,请先使用一个纯CSS选择器选择元素,然后使用.filter(":hidden")
作筛选。 - 过度使用这个选择器可能带来性能影响,因为它会强迫浏览器在它可以确定可见性之前重新呈现网页。用别的方法跟踪元素的可见性,比如说使用样式类,可以提供更好的性能。
示例
显示所有的隐藏的div,并记数所有的type="hidden"的<input>。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>hidden demo</title> <style> div { width: 70px; height: 40px; background: #e7f; margin: 5px; float: left; } span { display: block; clear: left; color: red; } .starthidden { display: none; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <span></span> <div></div> <div style="display:none;">Hider!</div> <div></div> <div class="starthidden">Hider!</div> <div></div> <form> <input type="hidden"> <input type="hidden"> <input type="hidden"> </form> <span></span> <script> // 在一些浏览器中,:hidden包括<head>、<title>、<script>,等等 var hiddenElements = $( "body" ).find( ":hidden" ).not( "script" ); $( "span:first" ).text( "Found " + hiddenElements.length + " hidden elements total." ); $( "div:hidden" ).show( 3000 ); $( "span:last" ).text( "Found " + $( "input:hidden" ).length + " hidden inputs." ); </script> </body> </html>
演示结果