这是我的代码:
<div class="container">
<div class="prova">1</div>
<div class="prova">2</div>
<div class="prova">3</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我希望每隔500毫秒获得每个div的内容.当我到达第3个位置时,返回第一个位置,依此类推.一个圆形next().
试过:
var primoElem = $('.prova').first();
setInterval(function () {
console.log(primoElem.html());
primoElem = primoElem.next();
}, 500);
Run Code Online (Sandbox Code Playgroud)
但我只得到3个结果,然后就停止了.
当jQuery函数无法正常工作时,您可以随时通过保存旧函数并覆盖它来更改它.或者,如果您不想更改jquery行为,也可以创建自己的函数.例如,对于重写,在jquery加载后将其添加到代码中:
$.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();
}
Run Code Online (Sandbox Code Playgroud)
然后你的代码将工作.
如果您不想覆盖,只需更改名称:
$.fn.loopNext = function(selector){
var selector = selector || '';
return this.next(selector).length ? this.next(selector) : this.siblings(selector).addBack(selector).first();
}
Run Code Online (Sandbox Code Playgroud)
然后这样称呼它:
primoElem.loopNext();
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/EcnSH/
你可以这样做:
primoElem = primoElem.next();
if (!primoElem.length) primoElem = $('.prova').first();
Run Code Online (Sandbox Code Playgroud)
有时候没有标准功能可以完全按照您的要求进行操作,但是它只是意味着您的特定需求被额外的代码行覆盖并不重要.