这是我的代码:
<div class="container">
<div class="prova">1</div>
<div class="prova">2</div>
<div class="prova">3</div>
</div>
我想每500分钟获得每个div的内容。当我到达第3个位置时,返回第一个位置,依此类推。通告next()
。
试过:
var primoElem = $('.prova').first();
setInterval(function () {
console.log(primoElem.html());
primoElem = primoElem.next();
}, 500);
但我只得到3个结果,然后停止。
答案 0 :(得分:7)
当jQuery函数无法正常工作时,您可以随时通过保存旧函数并覆盖它来更改它。或者,如果您不想更改jquery行为,也可以创建自己的函数。例如,对于重写,请在jquery load:
之后将其添加到代码中$.fn.oldNext = $.fn.next;
$.fn.next = function(selector){
var selector = selector || '';
return this.oldNext(selector).length ? this.oldNext(selector) : this.siblings(selector).addBack(selector).first();
}
然后你的代码就可以了。
如果您不想覆盖,只需更改名称:
$.fn.loopNext = function(selector){
var selector = selector || '';
return this.next(selector).length ? this.next(selector) : this.siblings(selector).addBack(selector).first();
}
然后这样称呼:
primoElem.loopNext();
答案 1 :(得分:5)
你可以这样做:
primoElem = primoElem.next();
if (!primoElem.length) primoElem = $('.prova').first();
有时没有标准功能可以完全按照您的要求进行操作,但如果它只是意味着您的特定需求被另外一行代码覆盖,则无关紧要。
答案 2 :(得分:1)
只需检查一下:
setInterval(function () {
console.log(primoElem.html());
primoElem = primoElem.next().length ? primoElem.next() : $('.prova').first();
}, 500);
答案 3 :(得分:0)
您也可以使用计数器:
var primoElemColl = $('.prova'),
counter = 0;
setInterval(function () {
var primoElem = primoElemColl.eq(counter++ % primoElemColl.length);
console.log(primoElem.html());
}, 500);
答案 4 :(得分:0)
没有“最后到第一个”然而,我倾向于使用索引:在这里我向元素添加一个类,根据索引将其移动并返回顶部。
var primoElem = $('.prova');
var provaIndex = 0;
var provaLastIndex = primoElem.length - 1
primoElem.eq(provaIndex).addClass('showmyprogress');
setInterval(function () {
$('.showmyprogress').removeClass('showmyprogress');
provaIndex = (provaIndex === provaLastIndex) ? 0 : provaIndex + 1;
primoElem.eq(provaIndex).addClass('showmyprogress');
}, 500);
在行动中展示:http://jsfiddle.net/wb9V3/