Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   поочередное открытие картинок (https://javascript.ru/forum/jquery/19095-poocherednoe-otkrytie-kartinok.html)

Dr.Livsi 26.07.2011 01:57

поочередное открытие картинок
 
Всем доброго времени суток!
На странице имеется около 10 картинок. все спрятаны методом $('img').hide(). Мне нужно сделать так, что бы каждая из спрятанных картинок одна за одной, по очереди открылись (fadeIn). Может ли кто помочь с этой задачей?

belilo2001 27.07.2011 21:06

Посмотрите тему "Как заблокировать автоскроллинг" от 27.7.2011
Возможно, скрипт вам подойдет.

Zimb 28.07.2011 17:33

<script>
//Скритие всех картинок
    $("img").hide();
	
//Создание интервала для очередного отображения картинок
	setInterval(function(){
		var visEl = $("img:visible");  //Находи видимую картинку
		var nextEl = visEl.next();    //Следующая после видимой
		$("img").hide();                //Скрытие опять всего 
		
		if(visEl.length==0||nextEl.length==0) //Если нет видимого элемента или нет следующего тогда отображаем первую картинку в другом случае открываем следующую по порядку
                 $("img:first").fadeIn();
		else nextEl.fadeIn(); 		
	}, 1000)
</script>

belilo2001 30.07.2011 17:26

Уважаемый Zimb!
Ваш скрипт работает, но изображение на странице дергается вверх-вниз в моменты срабатывания .hide() и fadeIn().
Аналогичная проблема в теме "Как заблокировать автоскроллинг".
Помогите решить!

Dr.Livsi 31.07.2011 16:45

не, не запускается :(((
Наверное, что-то не то делаю.
Вот мой вариант, но он тоже не работает:
<script type="text/javascript">
$(function() //при загрузке страницы сначала все прячем
{
$('#photo').hide()
$('.preview').hide()
}
);

window.onload=function() //после загрузки страницы - открываем поочередно
{
$('#photo').fadeIn('slow');
open2()
};

function open2()
{
$.each($('.preview:hidden'), function(){
setTimeout(myopen(this), 100)
})
}

function myopen(obj) {$(obj).fadeIn(500)};
</script>

melky 31.07.2011 17:55

http://jsfiddle.net/phaYP/3/
$(function(){

    $('#photo').fadeIn('slow');
    
    var els = $('.preview:hidden'), i=0;
    
    (function cycle(){
        
        i in els && els.eq(i++).fadeIn("500", cycle);
        
    })();      
});

Dr.Livsi 31.07.2011 18:46

Цитата:

Сообщение от melky (Сообщение 116492)
http://jsfiddle.net/phaYP/3/
$(function(){

    $('#photo').fadeIn('slow');
    
    var els = $('.preview:hidden'), i=0;
    
    (function cycle(){
        
        i in els && els.eq(i++).fadeIn("500", cycle);
        
    })();      
});

Нет, не работает.

melky 31.07.2011 18:57

там демо по ссылке. работает.

Dr.Livsi 31.07.2011 19:05

попробовал вот так:
$(function()
{
	$('#photo').hide()
	$('.preview').hide()
	window.onload=function() 
		{
		$('#photo').fadeIn('slow');
		$('.preview:hidden:first').fadeIn('slow');
		$('.preview:hidden').each(function()
			{
			$(this).fadeIn('slow');
			});	
		}
	$('a').click(function()
		{
		$('#photo').fadeOut(400)
		$('.preview').fadeOut(400)		
		});
}
);

Нормально - плавное октрытие всех сразу preview работает. Попробовал добавить setTimeout():
$('.preview:hidden').each(function()
			{setTimeout(function(this)
				{
				$(this).fadeIn('slow');
				},100)
			});

Не работает :(((

melky 31.07.2011 19:10

http://jsfiddle.net/phaYP/4/

и только скажи мне , что это не работает

>_<


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