Не работает функция
Есть функция с таким кодом
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() выполняется. Подскажите, в чём проблема? |
Забыл написать...
Функция clear() очищает нужный див А config() загружает данные, в том числе и элемент с id='smiles' |
Ну очевидно же. Все тоже самое: делать манипуляции после того, как #smiles появится на странице, по есть засунуть animate в функцию обратного вызова.
|
очищать див можно так:
$("#mydiv").empty();
|
ваый,
У меня так и сделано. config('open_conf','.articleContent'); // загружает #smiles $('#smiles').animate({height: 'show'}, 200); // показывает #smiles "по есть засунуть animate в функцию обратного вызова.", можно по подробнее? |
devote,
я знаю. Просто, хочу как можно меньше использовать jQuery. |
Цитата:
|
Цитата:
|
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;
}
/////дальше код не относящийся к данной проблеме ///////////
}
|
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);
});
|
ваый,
Блин.. Точно! ))) тоже после твоего поста начал додумываться, но потом подумал, что не к тому выводу пришёл.. |
ваый,
ну вот пишешь, пишешь а вся благодарность тебе =) |
devote,
а нельзя ли как-то узнать загрузились ли данные полностью? Возникла идея в myf() перед тем как открыть элемент проверить загрузился ли он или нет. Для этого в config() нужно как-то определить прошла ли загрузка полностью или нет, и вернуть нужно значение.. |
devote,
Не правда, я благодарен всем, кто хоть что-то напишет в помощь)) И вам я также благодарен, просто во время не успеваю обновлять страницу и не все посты сразу замечаю(( |
функция success не будет выполнена при ошибочной загрузке
|
devote,
Создал в начале функции config() переменную var returnF = false; И в конце success написал returnF = true; Т.е. если она выполнится, то значение переменной изменится на true. А после return returnF; В функции myf() где нужно показывать загруженный с помощью config() элемент проверяю, что она вернула, если true, то показываю див, но возвращается всё время false.. Уже и ничё придумать не могу.... |
Кто-нибудь может подсказать как запустить нужную функцию только после загрузки всех данных?
|
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');
}
callback();
},
complete: function() {
}
});
return false;
}
/////дальше код не относящийся к данной проблеме ///////////
}
config('open_conf','.articleContent', function(){
$('#smiles').animate({height: 'show'}, 200);
});
|
devote,
Извиняюсь, но мне скорее всего это вариант не подойдёт, т.к. я не совсем понимаю для чего в конце функции запускается complete: function(){ } |
devote,
Спасибо, всё получилось) |
| Часовой пояс GMT +3, время: 09:53. |