Не работает функция
Есть функция с таким кодом
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, время: 11:27. |