Как остановить функцию цикла .each .animate в jQuery - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь переместить набор различных div, для этого я сделал function, чтобы совершить бесконечное движение в пространстве.Теперь я хочу поместить различные div в своего рода сетку, чтобы классифицировать их.Иногда он запускается, но не останавливает function, и когда каждый div помещается, он продолжает двигаться.Чего я не хочу (без использования библиотеки, такой как Particle.js), так это чтобы она постоянно двигалась, но когда я нажимаю, она мгновенно останавливает div и бежит из их положения в сетку, а по второму щелчку - изсетка для функции.

Я пишу это на 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>

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете добавить .stop () в конце

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

...