Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему callback у animate запускается 2 раза? (https://javascript.ru/forum/misc/60532-pochemu-callback-u-animate-zapuskaetsya-2-raza.html)

Untropee 05.01.2016 16:36

Почему callback у animate запускается 2 раза?
 
Только заметил что функция обратного вызова у animate запускается два раза. Вот пример:

$("body").click(function(){

	$(".popup_static, .sale").animate({opacity:1},300,function(){alert()});
	
})


Алерт вылетает 2 раза. Почему так? Как сделать чтобы один раз?

рони 05.01.2016 16:49

Untropee,
два элемента == два callback

Untropee 05.01.2016 16:52

Да, спасибо, только что нашёл ответ в буржунете)

рони 05.01.2016 17:04

animate окончание очереди два варианта
 
Untropee,
запуск алерта по окончании всех анимаций на данных элементах
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>animated demo</title>
  <style>
  div {
    background: yellow;
    border: 1px solid #AAA;
    width: 80px;
    height: 80px;
    margin: 0 5px;
    float: left;
    opacity: 0;
  }

  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<button id="run">Run</button>

<div class="popup_static"></div>
<div  class="sale"></div>


<script>
var d = $(".popup_static, .sale");
$("body").click(function(){
	d.css({opacity:0}).animate({opacity:1},2000,function(){!d.queue( "fx" ).length && alert('test')});
})

d.animate({opacity: 1}, 2000).promise().done(function() {
    alert('test');
});

</script>

</body>
</html>

yazonnile 05.01.2016 17:17

d.animate({opacity: 1}, 300).promise().done(function() {
    alert('test');
});

рони 05.01.2016 17:27

yazonnile,
:) ок

yazonnile 05.01.2016 21:46

Упс. Вы раньше написали? О_о
Я не копировал) Мистика

рони 05.01.2016 21:47

yazonnile,
я добавил ваш вариант в свой код для примера, хотя на удивление похоже, как я пишу :lol:


Часовой пояс GMT +3, время: 19:25.