Javascript jQuery下一个循环不返回到第一个子循环
我目前正在尝试循环兄弟元素,但无法使循环返回到第一个兄弟元素 我正在使用nextOrFirst函数,如图所示 我已经复制了我试图在这方面取得的成就 HTMLJavascript jQuery下一个循环不返回到第一个子循环,javascript,jquery,html,loops,next,Javascript,Jquery,Html,Loops,Next,我目前正在尝试循环兄弟元素,但无法使循环返回到第一个兄弟元素 我正在使用nextOrFirst函数,如图所示 我已经复制了我试图在这方面取得的成就 HTML 为什么不将最后一个元素移到顶部,然后删除最后一个元素 setInterval( function swap() { var $container = $("#stories"); $container.prepend($container.find('.swapper:last').html());
为什么不将最后一个元素移到顶部,然后删除最后一个元素
setInterval(
function swap() {
var $container = $("#stories");
$container.prepend($container.find('.swapper:last').html());// move last to top
$container.find('.swapper:last').remove(); // remove last
}, 2000);
我猜你是想达到这样的目的:
这里有一个非常简单的方法。不要将当前项目的HTML属性设置为下一个项目,只需使用insertAfter,如下所示:
我认为这是正确的(但可能不是你想象的那样)。在
.each()函数的第一次迭代中
- 第一个元素设置为“数字2”(第二个元素的值)
- 然后将第二个元素设置为“数字3”(第三个元素的值)
- 最后,第三个元素被设置为“数字2”,它现在是第一个元素的值
你的方法
nextOrFirst()
没有问题,但是当你调用循环每个时,都有一些错误
在第一次获得nextItem
时,将第一个元素的文本更改为编号2
。因此,当第三次获得第一个元素时,您只需获得第2个元素,即nextItem
,您的html将显示:
number 2
number 3
number 2
这就是为什么你的循环不能回到第一个:你的下一个也可以,但是你的每一个都是错误的
谢谢,
爱迪生您可以保留相同的代码,只需替换这一行即可
$(this.html($(nextItem.html())
用这个
$(this.insertBefore($(nextItem)) 代码运行得很好,它在没有找到下一个元素时选择了第一个元素,所以非常完美lastOrFirst
,问题在于逻辑我以为是这样的,但今天早上我的大脑没有反应过来。干杯
setInterval(
function swap() {
var $container = $("#stories");
$container.prepend($container.find('.swapper:last').html());// move last to top
$container.find('.swapper:last').remove(); // remove last
}, 2000);
$(document).ready(function() {
$.fn.nextOrFirst = function(selector) {
var next = this.next(selector);
return (next.length) ? next : this.prevAll(selector).last();
};
setInterval(
function swap() {
$(".swapper").each(function() {
$($(this).nextOrFirst()).insertAfter($(this));
return;
});
}, 500);
});
number 2
number 3
number 2