【问题标题】:JQuery slice() not hiding/showing correctlyJQuery slice() 没有正确隐藏/显示
【发布时间】:2012-05-18 17:07:34
【问题描述】:

我有 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/

【问题讨论】:

标签: jquery hide show slice


【解决方案1】:

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

See demo in JsFiddle

【讨论】:

  • 对,slice 使用半开区间 [start, end) 而不是闭区间 [start, end]
【解决方案2】:

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

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

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

这里是working demo 你想要实现的目标

【讨论】:

    【解决方案3】:
    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();
    

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多