Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   не получается зациклить анимацию jquery (https://javascript.ru/forum/jquery/22165-ne-poluchaetsya-zaciklit-animaciyu-jquery.html)

swess 08.10.2011 17:42

не получается зациклить анимацию jquery
 
не получается зациклить функцию, может быть в jquery есть какие-то специальные способы вроде loop или тп?

для примера - кусочек простого кода - зеленый блок появляется и через некоторое время исчезает.


<style>

#green {
width:100px;
height:100px; 
background-color:#006600;
display:none;
}

</style>

<script src="jquery.js"></script> 
<script type="text/javascript">
for (i = 0; i < 5; i++) {

$("#green").fadeIn(1000);

setTimeout(
function() 
      { 
           $("#green").fadeOut(1000);
      }, 1000);	
}
</script>

<div id="green"></div>


цикл отрабатывает вместо пяти, всего один раз. :-?
как сделать чтобы отработал пять раз или бесконечно?

спасибо

walik 08.10.2011 17:48

function showhide() {
   $("#green").fadeIn(1000, function() {
      $("#green").fadeOut(1000, showhide);
   });
}

swess 08.10.2011 18:40

да, спасибо, так работает.
только остался открытым вопрос, как ее на $(document).ready(function(){
}); повесить. если просто вставить внутрь не отрабатывает

walik 08.10.2011 18:56

$(document).ready(function() {
   function showhide() {
      $("#green").fadeIn(1000, function() {
         $("#green").fadeOut(1000, showhide);
      });
   }

   showhide();
});

swess 08.10.2011 21:53

большое человеческое спасибо =)

Nightmare 08.10.2011 22:43

Цитата:

Сообщение от walik (Сообщение 130346)
$(document).ready(function() {
   function showhide() {
      $("#green").fadeIn(1000, function() {
         $("#green").fadeOut(1000, showhide);
      });
   }

   showhide();
});

а избыточности памяти не будет?

melky 08.10.2011 23:50

из-за рекурсии ?

Андрей38 25.10.2011 13:57

Цитата:

Сообщение от melky (Сообщение 130379)
из-за рекурсии ?

$(document).ready(function() {
function showhide() {
$("#green").fadeIn(1000, function() {
$("#green").fadeOut(1000, showhide);
});
}
showhide();
});
Я использовал эту идею зацикливания вместо циклов,
но увидев Ваше сообщение , я решил переспросить у Вас,что такое рекурсия и если пройденная анимация засоряет память,кеш и тд. то
КАК ЭТО ОЧИЩАТЬ ?
Про return false я практически ничего не знаю ,но
if ($('"#green":hidden').length==1 ){
return false}
так правильнее будет?
...Или это все дело запихнуть в цикл и брикнуть когда $('"#green":hidden').length==1 ???
...А еще назрел вопрос.
Какая логика будет быстрее _УДАЛИТЬ ДИВ из линейки дивов ПО ЗАВЕРШЕНИИ ЕГО СКРЫТИЯ те $(this).hide(20,function(){$(this).remove()}
)
ИЛИ
УДАЛИТЬ ВСЕ CКРЫТЫЕ ДИВЫ ОПТОМ ПО ДОСТИЖЕНИИ ЧИСЛА ВИДИМЫХ==0 ?


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