如何在 jQuery 中停止 .each .animate 循环函数

Posted

技术标签:

【中文标题】如何在 jQuery 中停止 .each .animate 循环函数【英文标题】:How to stop an .each .animate loop function in jQuery 【发布时间】:2019-03-29 07:43:24 【问题描述】:

我尝试移动一组不同的div,为此我做了一个function 以在空间中进行无限移动。现在我想将不同的div 放在一种网格中对它们进行分类。它有时会运行,但不会停止function,并且当放置每个 div 时,它会继续移动。 我不想(不使用像 Particle.js 这样的库)是让它不断移动,但是当我单击时,它会立即停止 div 并从它们的位置运行到网格,并且在第二次单击时,它会从网格到函数。

I write it on this jsFiddle

这里是 Jquery:

$(document).ready(function()

function move() 
    $('div').each(function()
      var top = $(this).css('top');
      var left = $(this).css('left');
      var topEnd = $(this).data('top-end');
      var leftEnd = $(this).data('left-end');
      $(this).animate(
          left: leftEnd,
          top: topEnd
      , 3000).animate(
          left: left,
          top: top
      , 3000,move);
     
)
move();

$('button').click(function()
  $('div').each(function()
            var position = $(this).position();
    var gridTop = $(this).data('grid-top');
    var gridLeft = $(this).data('grid-left');
    var topEnd = $(this).data('top-end');
    var leftEnd = $(this).data('left-end');
    if(position.top == gridTop )
      $(this).animate(
        left: leftEnd,
        top: topEnd
      , 2000);
     else 
      $(this).animate(
        left: gridLeft,
        top: gridTop
      , 2000);
    
  );
);

);

这里是html

<button>click moi</button>
<div data-grid-left="10px" data-grid-top="130px" data-left-end="250px" data-top-end="250px" style="background:green;left:-50px;"></div>
<div data-grid-left="130px" data-grid-top="10px" data-left-end="350px" data-top-end="-50px" style="background:red;top:200px;left:-200px;"></div>
<div data-grid-left="130px" data-grid-top="130px" data-left-end="500px" data-top-end="100px" style="background:blue;top:400px;left:-100px;"></div>

【问题讨论】:

添加 .stop() 到结尾 是的...我刚刚找到它 【参考方案1】:

你可以在末尾添加.stop()

$('button').click(function() ...

【讨论】:

我像 https://jsfiddle.net/Fromager/vc0u3omz/ 那样测试它,但它并没有真正运行

以上是关于如何在 jQuery 中停止 .each .animate 循环函数的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript/jQuery 等效于 LINQ Any()

jquery中each使用return无效

解析JQuery中each方法的使用

jquery的each()

jQuery mouseout 停止播放?

Jquery each方法跳出循环,并获取返回值实例讲解