在数组中获取元素位置的问题

时间:2013-10-24 00:02:14

标签: javascript jquery

使用正确的FIDDLE LINK更新

我有以下示例: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>

JQUERY

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

我该如何做到这一点?

3 个答案:

答案 0 :(得分:0)

您只需使用jQuery index()

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

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

答案 1 :(得分:0)

我认为这是1关的问题......试试

if (id < articles.length - 1)

答案 2 :(得分:0)

<强> LIVE DEMO

$(function(){

    var articles = [];

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

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

});

请注意,这样您只需收集可索引articles(每个子项始终为索引0)。您可以将push元素this放入元素集合中,然后通过将JS元素包装到jQuery对象元素集$(articles)中来单击引用它们的原始索引值。