21.06.2013, 17:17
|
|
Аспирант
|
|
Регистрация: 14.04.2013
Сообщений: 85
|
|
Последовательность выполнения функций
Здравствуйте!
У меня есть 4 функции, они выполняются одновременно, но мне нужно сделать так чтоб они выполнялись поочерёдно.
Подскажите пожалуйста как это мне сделать, а то я всё время чё-то на этом спотыкаюсь.
Вот функции:
function one_img(){
$('#img_1').fadeOut(2000, function(){
$(this).attr('width', 100).attr('height', 62).show(1500, function(){
$(this).effect('pulsate', 1500, function(){
$(this).attr('width', 199).attr('height', 125);
})
})
});
}
function two_img(){
$('#img_2').fadeOut(2000, function(){
$(this).attr('width', 100).attr('height', 62).show(1500, function(){
$(this).effect('pulsate', 1500, function(){
$(this).attr('width', 199).attr('height', 125);
})
})
});
}
function three_img(){
$('#img_3').fadeOut(2000, function(){
$(this).attr('width', 100).attr('height', 62).show(1500, function(){
$(this).effect('pulsate', 1500, function(){
$(this).attr('width', 199).attr('height', 125);
})
})
});
}
function for_img(){
$('#img_4').fadeOut(2000, function(){
$(this).attr('width', 100).attr('height', 62).show(1500, function(){
$(this).effect('pulsate', 1500, function(){
$(this).attr('width', 199).attr('height', 125);
})
})
});
}
one_img();
two_img();
three_img();
for_img();
Заранее большое спасибо!
|
|
21.06.2013, 18:40
|
Профессор
|
|
Регистрация: 16.04.2012
Сообщений: 310
|
|
у меня опыта нет.. но callback разве не для этого?
var callbacks = $.Callbacks();
callbacks.add(one_img );
callbacks.add(two_img );
callbacks.add(three_img );
callbacks.add(for_img );
callbacks.fire();
http://api.jquery.com/jQuery.Callbacks/
Но сам с колбэками не работал, может они тут нафиг и не нужны. )
Последний раз редактировалось Faab, 21.06.2013 в 19:07.
Причина: убрал ошибку в коде
|
|
21.06.2013, 19:25
|
Профессор
|
|
Регистрация: 16.04.2012
Сообщений: 310
|
|
нее... проверил, так тоже срабатывают все 4 функции одновременно
|
|
21.06.2013, 19:33
|
|
Аспирант
|
|
Регистрация: 14.04.2013
Сообщений: 85
|
|
Да, я тоже проверил, всё равно срабатывают все 4 одновременно, сейчас смотрю документацию по кэлбэкам, попробую разобраться, может всё-таки ответ в этой стороне.
Хотя нет, тут должен быть другой способ, посмотрю похожие темы на форуме...
Последний раз редактировалось Алек, 21.06.2013 в 19:40.
|
|
21.06.2013, 19:39
|
Профессор
|
|
Регистрация: 16.04.2012
Сообщений: 310
|
|
Слушай, а что за ошибка вылазивает
Метка времени: 21.06.2013 17:36:04
Ошибка: TypeError: $(...).effect is not a function
Источник: test.js
Строка: в твоём коде в посте строка 4, 14, 24, 34
4 ошибки... у тебя этих ошибок нет? Я из-за этой ошибки не могу протестировать ещё один вариант.
|
|
21.06.2013, 19:51
|
Профессор
|
|
Регистрация: 16.04.2012
Сообщений: 310
|
|
Если закомментировать то место где у меня вылазивает ошибка (я пока стал вдаваться что за эффект ты навсил и как), то так у меня всё работает:
function one_img(){
$('#img_1').fadeOut(2000, function(){
$(this).attr('width', 100).attr('height', 62).show(1500, function(){
$(this).effect('pulsate', 1500, function(){
$(this).attr('width', 199).attr('height', 125);
two_img();
})
})
});
}
function two_img(){
$('#img_2').fadeOut(2000, function(){
$(this).attr('width', 100).attr('height', 62).show(1500, function(){
$(this).effect('pulsate', 1500, function(){
$(this).attr('width', 199).attr('height', 125);
three_img();
})
})
});
}
function three_img(){
$('#img_3').fadeOut(2000, function(){
$(this).attr('width', 100).attr('height', 62).show(1500, function(){
$(this).effect('pulsate', 1500, function(){
$(this).attr('width', 199).attr('height', 125);
for_img();
})
})
});
}
function for_img(){
$('#img_4').fadeOut(2000, function(){
$(this).attr('width', 100).attr('height', 62).show(1500, function(){
$(this).effect('pulsate', 1500, function(){
$(this).attr('width', 199).attr('height', 125);
})
})
});
}
one_img();
Осталось выяснить что я закомментировал и исправить ошибку, но смысл решения проблемы будет тот же думаю.
У меня просто плагин UI наверное не установлен, вот и ошибка вылазивает. Я поправил код, так работает?
Последний раз редактировалось Faab, 21.06.2013 в 19:56.
|
|
21.06.2013, 20:17
|
|
Аспирант
|
|
Регистрация: 14.04.2013
Сообщений: 85
|
|
Да, спасибо!
Всё отлично работает.
А так, да если UI не установлено, ошибки вплывают.
У меня она полностью почти установлена, кроме виджетов, я попутно ещё корзину разрабатываю для контента, потипу как в интернет магазине.
Ещё раз спасибо вам за подсказку!
|
|
21.06.2013, 20:47
|
Профессор
|
|
Регистрация: 16.04.2012
Сообщений: 310
|
|
Удачи.
Вот у меня вопрос, к спецам JS. Вот какая польза от callback?
Вот пример (пусть в его случае и неверное по смыслу) топстартера:
one_img();
two_img();
three_img();
for_img();
А вот аналог кода на callback:
var callbacks = $.Callbacks();
callbacks.add(one_img );
callbacks.add(two_img );
callbacks.add(three_img );
callbacks.add(for_img );
callbacks.fire();
И в чём фишка callback? Я не вижу приимущество использования callback... В каких ситуациях его используют?
|
|
21.06.2013, 21:48
|
|
Студент
|
|
Регистрация: 30.04.2012
Сообщений: 1,113
|
|
удалил
Последний раз редактировалось vadim5june, 21.06.2013 в 21:54.
|
|
|
|