Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.09.2011, 21:47
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Последовательная анимация нескольких элементов
Есть маленькая проблемка, код на картинке не хочет работать, а вот этот работает:
$(function(){
		var ftime = 10000; 
		$('.se').each(function(){
			$(this).delay(ftime).animate({opacity:0}, 1500);
			ftime += 100;
		});
		$('.planka div').each(function(){
			$(this).delay(ftime).animate({opacity:0, width:0, left:"50px"}, 1500);
			ftime += 100;
		});
	});


это слайдер, с эфектом... рамки, одна за другой складываются, но хочу вынести некоторые эффекты в отдельные пользовательские функции, что не так делаю...??? по коду на картинке выходит ошибка в гугл хроме:Reference error и консоль при этом не работает...

Долго не программил, так что не ругайте сильно
Изображения:
Тип файла: jpg Snapshot_2.jpg (17.4 Кб, 13 просмотров)
__________________
Нет предела совершенству...
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2011, 22:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

странный код на картинке у вас. он и не будет работать, потому что window.ftime не определена. ( нет объявления переменной, а она используется)

мне кажется, что будет получше так
$(function(){
        var ftime = 10000; 

        $('.se, .planka div').each(function(){
            var a = $(this).hasClass("se") ? { opacity:0 } : {opacity:0, width:0, left:"50px"};
            //               --- это можно было сделать в 2 строки.
            //               | 
            $(this).delay(ftime += 100).animate( a, 1500);

        });
});


ну или так. это уже понятней будет

$(function() {
    var ftime = 10000;
    
    $('.se, .planka div').each(function(i, el) {
        el = $(el);

        el.delay(ftime);

        if (el.hasClass(".se")) {
            el.animate({ opacity: 0 }, 1500);
        } else {
            el.animate({ opacity: 0, width: 0, left: "50px" }, 1500);
        }

        ftime += 100;
    });
});

Последний раз редактировалось melky, 12.09.2011 в 22:19.
Ответить с цитированием
  #3 (permalink)  
Старый 12.09.2011, 22:29
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Код не странный, я хочу сделать SeGlader двухрежимной, сначала она скрывает, а потом ворачивает всё обратно, это часть эффекта, мне надо её отдельно сделать...
__________________
Нет предела совершенству...
Ответить с цитированием
  #4 (permalink)  
Старый 12.09.2011, 22:33
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

напишите плагин
(function($) {
    $.fn.somePlugin = function(options) {

    };	
})(jQuery);
Ответить с цитированием
  #5 (permalink)  
Старый 12.09.2011, 22:38
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

как вариант, но мне кажется с этим ещё больше проблем нагребу... значит jquery и пользовательские функции ни как не подружить???
__________________
Нет предела совершенству...
Ответить с цитированием
  #6 (permalink)  
Старый 12.09.2011, 22:38
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

подружить. но легче через плагин.
Ответить с цитированием
  #7 (permalink)  
Старый 12.09.2011, 22:45
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Попробую тогда плагин слепить с эффектами...
__________________
Нет предела совершенству...
Ответить с цитированием
  #8 (permalink)  
Старый 13.09.2011, 18:21
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Вот что намутил
jQuery.fn.JBox = function(options) {
	var opt = jQuery.extend({
		effects: {opacity:0},
		sdelay: 5000,
		fdelay: 100,
		speed: 2000
	}, options),
	ftime = opt.sdelay;
	this.each(function(){
		$(this).delay(ftime).animate(opt.effects, opt.speed);
		ftime += opt.fdelay;
	});
}

$(function(){
	$('.se').JBox();
	$('.planka div').JBox({effects: {opacity:0, width:0, left:"50px"},sdelay:7000});
});
Обратный эффект так же работает, просто меняешь настройку effects
__________________
Нет предела совершенству...

Последний раз редактировалось sysya, 13.09.2011 в 19:27.
Ответить с цитированием
  #9 (permalink)  
Старый 17.09.2011, 23:45
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

у меня такая же проблема возникла, но решить её по-нормальному надо было неделю назад

задача : последовательно показать 4 элемента

первый способ
<p>ololo</p><p>ololo</p><p>ololo</p><p>ololo</p>

<script src="http://yandex.st/jquery/1.6.4/jquery.min.js"></script>

<script>
var els = $("p").hide(), i=0;
    
    (function loop(){
        els.eq( i++ ).slideDown(800, loop)
    })();
</script>


второй способ через deferred. но я не могу никак осилить это нововведение.
Ответить с цитированием
  #10 (permalink)  
Старый 02.03.2012, 14:51
Интересующийся
Отправить личное сообщение для azza147 Посмотреть профиль Найти все сообщения от azza147
 
Регистрация: 08.11.2011
Сообщений: 11

Сообщение от melky Посмотреть сообщение
у меня такая же проблема возникла, но решить её по-нормальному надо было неделю назад

задача : последовательно показать 4 элемента

первый способ
<p>ololo</p><p>ololo</p><p>ololo</p><p>ololo</p>

<script src="http://yandex.st/jquery/1.6.4/jquery.min.js"></script>

<script>
var els = $("p").hide(), i=0;
    
    (function loop(){
        els.eq( i++ ).slideDown(800, loop)
    })();
</script>


второй способ через deferred. но я не могу никак осилить это нововведение.
Спасибо, оч. полезный код.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JQuery, анимация для нескольких элементов сразу, возможно ли? Logo jQuery 21 29.05.2012 21:50
Скрытие нескольких независимых элементов shik Элементы интерфейса 8 09.12.2010 08:57
Сложение нескольких значений элементов frolvict jQuery 2 04.12.2010 11:52
выбор нескольких элементов ввиде ссылок Simon jQuery 0 21.08.2010 12:31
Повесить событие click (jQuery) на весь документ, кроме нескольких элементов dabutch Events/DOM/Window 2 12.11.2009 19:52