:visible 选择器| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

: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>

演示结果

如果网页上不能运行示例,请点击http://www.asprain.cn/jQueryAPI/visible-selector.htm查看示例。

如果你觉得本文档对你有用,欢迎给翻译作者支付宝打赏,支持翻译作者源源不断翻译更多有用的技术文档。