0

我有16个类的元素row

我正在尝试通过切片更改一次显示的元素。

$(document).ready(function() {
$('.row').slice(0, 2).show();
$('.row').slice(3, 16).hide();


$('#next').click(function() {
    $('.row').slice(0, 2).hide();
    $('.row').slice(3, 5).show();
    $('.row').slice(6, 15).hide();
});

});

所以最初,你只看到这三个项目:

Row 0
Row 1
Row 2
//$('.row').slice(0, 2).show(); -- this is correct

但是当我点击我的按钮来显示接下来的三个时,它会显示:

Row 2
Row 3
Row 4
//yet I specified this: $('.row').slice(3, 5).show();

为什么会发生这种情况,如何解决?

Jfiddle:http: //jsfiddle.net/RjHvw/

4

3 回答 3

1
Row 2
Row 3
Row 4
//yet I specified this: $('.row').slice(3, 5).show();

这似乎是正确的,切片索引是基于 0 的。

您可以添加1

// just so it's clear
// you'd tipically have an `idx`
// or `counter` where you add `1`
$('.row').slice(3 + 1, 5 + 1).show();
于 2012-05-10T06:56:21.193 回答
1

slice 方法是基于零的索引,Slice,甚至结束参数也是基于零的。范围扩展到但不包括指定的索引。

在 JsFiddle 中查看演示

于 2012-05-10T06:56:28.540 回答
1

正如其他人已经说过的那样, Slice使用基于 0 的索引,并且结束编号的元素被排除在所选列表之外。这是 jQuery.com 中的参数定义,它说明了这一点

.slice( start [, end] )
start 一个整数,指示开始选择元素的从 0 开始的位置。如果为负,则表示与集合末尾的偏移量。

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

这是您要实现的目标的工作演示

于 2012-05-10T07:05:14.457 回答