0

更新了正确的小提琴链接

我有以下示例:http: //jsfiddle.net/gespinha/kRUym/52/

每次单击数组的元素时,它都会将其在数组中的位置和下一个元素的位置记录到控制台。我想要做的是,当我单击最后一个元素时,我希望它识别下一个元素实际上是第一个元素(循环数组)。

但是当我点击最后一个元素时,它不会将 arrayPos 变量(数组中的位置数:文章)设置为零(数组中的第一个位置,它只是继续到第 6 位,即使我有在 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>

查询

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

您可以简单地使用 jQuery index()

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

这将提醒从 0 开始的索引。
这要求项目位于单独的 div 中,索引是相对于父级的索引。

于 2013-10-24T00:05:51.343 回答
0

我相信这是一个问题...尝试

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

现场演示

$(function(){

    var articles = [];

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

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

});

请注意,这样您将只收集可索引的articles(每个孩子将始终是索引 0)。您可以push将 JSthis元素放入元素集合中,然后通过将 JS 元素包装到 jQuery Object Elements 集合中来引用它们的原始索引值$(articles)

于 2013-10-24T00:13:20.827 回答