11.08.2011, 17:46
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
Не работает функция
Есть функция с таким кодом
function myf() {
$.ajax({
type: "POST",
url: "config.php",
data: {данные},
success: function(html) {
$("#res").html(html);
document.getElementById('res').style.display = 'block'; //по умолчанию #res скрыт
setTimeout(function() {
document.getElementById('res').style.display = 'none';
clear('res');
config('open_conf','.articleContent');
$('#smiles').animate({height: 'show'}, 200); // эта часть не работает
},1000);
}
});
return false;
}
Все функции работают, кроме метода .animate().
Но если перед ним поставить alert('text') , то после скрытия алерта пользователем метод .animate() выполняется.
Подскажите, в чём проблема?
Последний раз редактировалось (Sandr), 11.08.2011 в 17:49.
|
|
11.08.2011, 17:49
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
Забыл написать...
Функция clear() очищает нужный див
А config() загружает данные, в том числе и элемент с id='smiles'
|
|
11.08.2011, 17:51
|
Профессор
|
|
Регистрация: 29.06.2011
Сообщений: 445
|
|
Ну очевидно же. Все тоже самое: делать манипуляции после того, как #smiles появится на странице, по есть засунуть animate в функцию обратного вызова.
|
|
11.08.2011, 17:52
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
очищать див можно так:
$("#mydiv").empty();
|
|
11.08.2011, 18:30
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
ваый,
У меня так и сделано.
config('open_conf','.articleContent'); // загружает #smiles
$('#smiles').animate({height: 'show'}, 200); // показывает #smiles
"по есть засунуть animate в функцию обратного вызова.", можно по подробнее?
|
|
11.08.2011, 18:31
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
devote,
я знаю. Просто, хочу как можно меньше использовать jQuery.
|
|
11.08.2011, 18:49
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от (Sandr)
|
по есть засунуть animate в функцию обратного вызова.", можно по подробнее?
|
листинг функции config сюда выклади
|
|
11.08.2011, 18:57
|
Профессор
|
|
Регистрация: 29.06.2011
Сообщений: 445
|
|
Сообщение от (Sandr)
|
У меня так и сделано.
|
У тебя не так сделано. У тебя сначала что-то происходит в config, и следом animate. Поэтому если у тебя есть что-то асинхронное в config, то animate не будет работать, потому что начинает выполняться не дожидаясь окончания работы config.
|
|
11.08.2011, 18:58
|
Профессор
|
|
Регистрация: 14.10.2010
Сообщений: 376
|
|
devote,
function config(sel, div)
{
var eDoc = document.getElementById('res_adm');
if(sel == 'open_conf') {
$.ajax({
type: "POST",
url: "config.php",
data: {select: "open_conf"},
success: function(html) {
$(div).html(html);
if(document.getElementById('rating').innerHTML == '1') {
confBoolean('yes', 'rating', 'rating_yes_article', 'rating_no_article');
}
else {
confBoolean('no', 'rating', 'rating_yes_article', 'rating_no_article');
}
}
});
return false;
}
/////дальше код не относящийся к данной проблеме ///////////
}
|
|
11.08.2011, 19:01
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
function config(sel, div, callback)
{
var eDoc = document.getElementById('res_adm');
if(sel == 'open_conf') {
$.ajax({
type: "POST",
url: "config.php",
data: {select: "open_conf"},
success: function(html) {
$(div).html(html);
if(document.getElementById('rating').innerHTML == '1') {
confBoolean('yes', 'rating', 'rating_yes_article', 'rating_no_article');
}
else {
confBoolean('no', 'rating', 'rating_yes_article', 'rating_no_article');
}
},
complete: function() {
callback();
}
});
return false;
}
/////дальше код не относящийся к данной проблеме ///////////
}
config('open_conf','.articleContent', function(){
$('#smiles').animate({height: 'show'}, 200);
});
|
|
|
|