не получается зациклить анимацию 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> цикл отрабатывает вместо пяти, всего один раз. :-? как сделать чтобы отработал пять раз или бесконечно? спасибо |
function showhide() {
$("#green").fadeIn(1000, function() {
$("#green").fadeOut(1000, showhide);
});
}
|
да, спасибо, так работает.
только остался открытым вопрос, как ее на $(document).ready(function(){ }); повесить. если просто вставить внутрь не отрабатывает |
$(document).ready(function() {
function showhide() {
$("#green").fadeIn(1000, function() {
$("#green").fadeOut(1000, showhide);
});
}
showhide();
});
|
большое человеческое спасибо =)
|
Цитата:
|
из-за рекурсии ?
|
Цитата:
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, время: 19:41. |