Показать сообщение отдельно
  #3 (permalink)  
Старый 19.10.2016, 15:45
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Сообщение от laimas Посмотреть сообщение
function name() {
   $('selector').animate(...., function() {
       name()
   );
}
name();


Или в параметре step проверяя условие, останавливать анимацию запуская ее вновь с новыми параметрами.
Ок. Спасибо с callback - вроде разобрался. Но вопросы всё ещё остались.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

	<style type="text/css">
		#field {
			position: relative;
			width: 300px;
			height: 300px;
			background-color: red;
		}

		.square {
			position: absolute;
			width: 50px;
			height: 50px;
			background-color: black;
			border: 1px solid white;
			color: white;
			font-size: 1.5em;
			text-align: center;
			cursor: pointer;
		}

		.square:nth-child(1) {
			top: 20%;
			left: 20%;
		} 

		.square:nth-child(2) {
			top: 40%;
			left: 20%;
		}
		.square:nth-child(3) {
			top: 60%;
			left: 20%;
		}
		.square:nth-child(4) {
			top: 80%;
			left: 20%;
		}
		#button {
			width: 300px;
			height: 100%;
			background-color: green;
			cursor: pointer;
			font-size: 1.5em;
			color: white;
		}
	</style>

	
</head>
<body>
	<div id="field">
		<div class="square">1</div>
		<div class="square">2</div>
		<div class="square">3</div>
		<div class="square">4</div>
	</div>
	
	<div id="button">Clear function</div>


	<script type="text/javascript" >

window.onload = function() {

	var newDiv = $('#field > div');


  
	// alert('vse ok');

	$('#field').on('click', 'div', function() {

		$(this).addClass('circle');
		move();

	});



	$('#button').on('click', function() {

	  newDiv.removeClass('circle');	

    newDiv.eq(0).css({'top':'',
                      'left':''});
    newDiv.eq(1).css({'top':'',
                      'left':''});
    newDiv.eq(2).css({'top':'',
                      'left':''});
    newDiv.eq(3).css({'top':'',
                      'left':''});
 
	})



 function move() {

 		
 		    newDiv.eq(0).css({'top':'15%',
                          'left':'25%'});

        newDiv.eq(1).css({'top':'15%',
                          'left':'57%'});

        newDiv.eq(2).css({'top':'65%',
                          'left':'57%'});

        newDiv.eq(3).css({'top':'65%',
                          'left':'25%'});

 }


function moveFunction() {

 if ( $('#field > div').hasClass('circle') !== true  ) {

  function moveForward() { 

     newDiv.animate({left: "+=10%" }, 1000);
     newDiv.animate({left: "-=10%" }, 2000, moveForward );

         
  }  moveForward();

 

} else {

  // Тут должно происходить вращение квадратиков по кругу =)

}

} moveFunction();

  

}


	</script>
</body>
</html>


1) Почему при добавления класса circle moveFunction() продолжает анимироватся и почему смещение дивов выходит такое кривое ?
2) как быть с анимацией дивов по кругу ?
Ответить с цитированием