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();
});

});

したがって、最初は次の 3 つの項目のみが表示されます。

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

しかし、ボタンをクリックして次の 3 つを表示すると、代わりに次のように表示されます。

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に基づいており、 end パラメータもゼロベースに基づいています。範囲は指定されたインデックスまで拡張されますが、指定されたインデックスは含まれません。

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 に答える