У меня есть сайт, который делает что-то подобное. Функция выскользнуть, замените содержимое, и задвинуть представлены следующим образом:
var loadAnAjaxArticle = function (url) {
var removeParentArticle = function() {
// I don't like doing this, but so far haven't found a
// particularly elegant way to replace the article
// when calling load(), only append it.
$('article').first().html($('article').last().html());
};
var showArticle = function (response, status, xhr) {
if (status == "error") {
$('article').first().html('<h2>There was an error processing your request.</h2>');
$('article').first().slideDown('slow');
} else {
removeParentArticle();
$('article').first().slideDown('slow');
}
};
var loadArticle = function() {
$('article').first().load(url + ' article', showArticle);
};
$('article').first().slideUp('slow', loadArticle);
}
В основном, это вызывает .slideUp
, чтобы скрыть содержимое, обеспечивая обратный вызов к другой функции. Эта функция вызывает .load
для обновления содержимого, обеспечивая обратную связь с другой функцией. Эта функция делает небольшую манипуляцию с DOM, чтобы она выглядела правильно (это уже в начале разработки, я еще не сделал ее более элегантной), и звонит .slideDown
, чтобы снова показать содержимое.
Это легко сделать в этом случае, потому что каждая функция, которую я использую, принимает обратный вызов. Если функции, которые вы используете, имеют одинаковую возможность, вы должны быть в состоянии связать их таким образом.
возможно дубликат [Подождите два события с JQuery и выполнить обратный вызов, когда оба сделаны] (HTTP: //stackoverflow.com/questions/10469292/wait-for-two-events-with-jquery-and-execute-a-callback-when-both-are-done) –
Можете ли вы показать минимальное представление кода для воспроизведения проблема? – David