使用正确的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);
});
我该如何做到这一点?
答案 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)
中来单击引用它们的原始索引值。