JQuery slice()没有正确隐藏/显示

时间:2012-05-10 06:42:12

标签: jquery hide show slice

我有类row

的16个元素

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

$(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/

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

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

See demo in JsFiddle

答案 2 :(得分:1)

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

  

.slice(开始[,结束])
  startAn表示从0开始的整数   开始选择元素的位置。如果是否定的话   表示从集合末尾的偏移量。

     

endAn整数表示   基于0的位置,元素停止被选中。如果   否定,它表示从集合末尾的偏移量。如果省略,   范围一直持续到集合结束。

以下是您要实现的目标的working demo