返回值:jQueryslice(start, [end])

根据指定的下标范围,过滤匹配的元素集合,并生成一个新的 jQuery 对象。

若一个 jQuery 对象代表了一个 DOM 元素集合,.slice() 方法会构造一个新的 jQuery 对象,用于存放筛选后的元素。所提供的 start 索引标识了集合中元素的起始位置,如果忽略 end 参数,从 start 开始,一直到集合中最后的元素都会被包含在结果中。

例如,在页面中有如下一个简单的列表:

<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 项列表项的背景色变成了红色。注意,索引是从 0 开始计数的,并且代表的是 jQuery 对象中的元素位置,而不是在 DOM 树中的位置。

end 对数允许我们进一步限制所选择的元素。例如:

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

现在,只有第 3 和第 4 项列表项会被选中。索引依然是从 0 开始计数的,但是在被选中的元素中不包括 end 参数所指的元素。

负索引

jQuery 的 .slice() 方法模仿了 JavaScript 的 .slice() 方法。其中的一个功能就是允许传入负的 startend 参数。如果传递的是负数,那么下标位置是从结尾开始的,而不是从起始位置开始。例如:

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

这次的执行结果是,只有第 4 项列表项的背景色变成了红色。因为它是唯一满足条件的列表项,即被选中的元素是从倒数第二个元素(-2)开始到最后一个元素(-1)(不含此元素)之间的元素。

示例:

将随机选中的范围内的 div 变成黄色。

<!DOCTYPE html>
<html>
<head>
<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="jquery.min.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>

演示:

示例:

假设共有三个段落,选择所有的段落,并进行 slice 操作,选择的范围只包含第一个元素。

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

示例:

假设共有三个段落,选择所有的段落,并进行 slice 操作,选择的范围只包含第一个和第二个元素。

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

示例:

假设共有三个段落,选择所有的段落,并进行 slice 操作,选择的范围只包含第二个元素。

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

示例:

假设共有三个段落,选择所有的段落,并进行 slice 操作,选择的范围只包含第二个和第三个元素。

jQuery 代码:
$("p").slice(1).wrapInner("<b></b>");

示例:

假设共有三个段落,选择所有的段落,并进行 slice 操作,选择的范围只包含第三个元素。

jQuery 代码:
$("p").slice(-1).wrapInner("<b></b>");