.slice()| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

.slice()

分类:遍历 > 筛选

返回: jQuery

.slice( start [, end ] )

描述:把匹配的元素集合缩小到一个子集,子集用一个索引范围指定。

加入于: 1.1.4
.slice( start [, end ] )
  • start
    类型:Integer
    一个整型数,从这个位置开始选择元素。如果是负数,它表示一个从集合的末尾开始的偏移。
  • end
    类型:Integer
    一个整型数,在这个位置结束选择元素。v如果是负数,它表示一个从集合的末尾开始的偏移。如果省略掉,这个范围会持续到集合的末尾。

给定一个jQuery对象,代表一个DOM元素的集合,.slice()方法构造了一个新的jQuery对象,包含元素的一个子集,该子集用start参数指定,视情况还可以用end参数指定。提供的start索引标识了一个元素在集合中的位置;如果省略了end,这个元素之后的所有元素将包含在结果中。

设想一个网页上有一个简单的列表:

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
</ul>

我们可以把这个方法应用到列表项目集合上:

$( "li" ).slice( 2 ).css( "background-color", "red" );

这次调用的结果是第三项、第四项和第五项有了红色背景。注意,提供的索引是基于0的,是引用了元素在jQuery对象中的位置,而不是在DOM树中的位置。

end参数允许我们进一步限制选中的范围。举个例子:

$( "li" ).slice( 2, 4 ).css( "background-color", "red" );

现在只有第三项和第四项被选中了。索引依然是基于0的;范围延伸到,但是不包括指定的索引。

负数索引

jQuery的.slice()方法是仿照JavaScript中用于数组的.slice()方法。它的功能之一是允许传入负的startend参数。如果提供了负数,就表示一个从集合的末尾开始的位置,而不是从开头开始。For example:

$( "li" ).slice( -2, -1 ).css( "background-color", "red" );

这次只有第四项变红了,因为它是位于倒数第二项-2和倒数第一项(-1)之间唯一的项目。

示例

根据一个随机的切片,把div变黄。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>slice demo</title>
  <style>
  div {
    width: 40px;
    height: 40px;
    margin: 10px;
    float: left;
    border: 2px solid blue;
  }
  span {
    color: red;
    font-weight: bold;
  }
  button {
    margin: 5px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p><button>Turn slice yellow</button>
  <span>Click the button!</span></p>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
 
<script>
function colorEm() {
  var $div = $( "div" );
  var start = Math.floor( Math.random() * $div.length );
  var end = Math.floor( Math.random() * ( $div.length - start ) ) +
    start + 1;
  if ( end === $div.length ) {
    end = undefined;
  }
  $div.css( "background", "" );
  if ( end ) {
    $div.slice( start, end ).css( "background", "yellow" );
  } else {
    $div.slice( start ).css( "background", "yellow" );
  }
  $( "span" ).text( "$( 'div' ).slice( " + start +
    (end ? ", " + end : "") +
    ").css( 'background', 'yellow' );" );
}
 
$( "button" ).click( colorEm );
</script>
 
</body>
</html>

演示结果

选择所有段落文本,然后切片选区,以只包含第一个元素。

$( "p" ).slice( 0, 1 ).wrapInner( "<b></b>" );

选择所有段落文本,然后切片选区,以只包含第一个和第二个元素:

$( "p" ).slice( 0, 2 ).wrapInner( "<b></b>" );

选择所有段落文本,然后切片选区,以只包含第二个元素。

$( "p" ).slice( 1, 2 ).wrapInner( "<b></b>" );

选择所有段落文本,然后切片选区,以只包含第二个和第三个元素。

$( "p" ).slice( 1 ).wrapInner( "<b></b>" );

选择所有段落文本,然后切片选区,以只包含第三个元素。

$( "p" ).slice( -1 ).wrapInner( "<b></b>" );

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

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