Javascript jQuery下一个循环不返回到第一个子循环

Javascript 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());

我目前正在尝试循环兄弟元素,但无法使循环返回到第一个兄弟元素

我正在使用nextOrFirst函数,如图所示

我已经复制了我试图在这方面取得的成就

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