当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery .slice()用法及代码示例


用法
.slice( start [, end ] ) => jQuery

说明:将匹配元素集减少为由一系列索引指定的子集。

  • 添加的版本:1.1.4.slice( start [, end ] )

    • start
      类型:Integer
      一个整数,指示开始选择元素的从 0 开始的位置。如果为负,则表示与集合末尾的偏移量。
    • end
      类型:Integer
      一个整数,指示元素停止被选择的从 0 开始的位置。如果为负,则表示与集合末尾的偏移量。如果省略,则范围将持续到集合的末尾。

给定一个表示一组 DOM 元素的 jQuery 对象,.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" );

此调用的结果是项目 3、4 和 5 的红色背景。请注意,提供的索引是从零开始的,并且是指元素在 jQuery 对象中的位置,而不是在 DOM 树中。

end 参数允许我们进一步限制所选范围。例如:

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

现在只选择了项目 3 和 4。该 index 再次从零开始;范围扩展到但不包括指定的索引。

负 index

jQuery .slice() 方法是在 JavaScript .slice() 数组方法之后设计的。它模仿的函数之一是能够将负数作为startend 参数传递。如果提供了负数,则表示从集合末尾开始的位置,而不是开头。例如:

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

这次只有列表项 4 变为红色,因为它是距离末尾两个 (-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-3.5.0.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>" );

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 .slice()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。