0

正しいフィドルリンクで更新

次の例があります: http://jsfiddle.net/gespinha/kRUym/52/

配列の要素をクリックするたびに、配列内の位置と次の要素の位置がコンソールに記録されます。私がやろうとしているのは、最後の要素をクリックしたときに、次の要素が実際には最初の要素であることを識別したいということです(配列をループします)。

しかし、最後の要素をクリックすると、arrayPos 変数 (配列内の位置の数: 記事) が 0 に設定されません (配列内の最初の位置、たとえ私がif 引数で、配列の長さよりも大きい場合はゼロになる必要があると述べています。

なぜこうなった?助言がありますか?

HTML

<div class="item">index 0</div>
<div class="item">index 1</div>
<div class="item">index 2</div>
<div class="item">index 3</div>
<div class="item">index 4</div>
<div class="item">index 5</div>

Jクエリ

var articles = [];
$('.item').each(function(){
    var obj = $(this);
    articles.push(obj);
});

for (var i = 0; i < articles.length; i++) {
    $(articles[i]).data("index", i)
}

$('.item').on("click", function() {
    var id = $(this).data("index");
    console.log('NOW: '+id);
    if(id < articles.length){
        id++
    } else {
        id = 0;
    }
    console.log('NEXT: '+id);
});

どうすればこれを機能させることができますか?

4

3 に答える 3

0

私はそれが1回限りの問題だと信じています...試してみてください

if (id < articles.length - 1)
于 2013-10-24T00:08:49.137 に答える
0

jQuery を簡単に使用できますindex()

$('.item').click(function(){
    alert( $(this).index() );
});

これにより、0 から始まるインデックスが警告されます
。これには、アイテムが別の div にあることが必要です。インデックスは、親に対する相対的なインデックスです。

于 2013-10-24T00:05:51.343 に答える
0

ライブデモ

$(function(){

    var articles = [];

    $('article').each(function(){
        articles.push( this );
    });

    $(articles).click(function(){
        console.log( $(this).index() );
    });

});

この方法では、インデックス可能なものを収集するだけであることに注意してくださいarticles(すべての子は常にインデックス 0 になります)。pushJS要素を要素のコレクションに入れthis、JS 要素を jQuery Object Elements コレクションにラップすることで、クリックすると元のインデックス値を参照できます$(articles)

于 2013-10-24T00:13:20.827 に答える