私は似たようなことをするサイトを持っています。スライドアウト、コンテンツの置換、およびスライドインの機能は次のとおりです。
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
コンテンツを再度表示するように呼び出します。
この場合、使用している各関数がコールバックを受け入れるため、これは簡単に実行できます。使用している関数が同じ機能を持っている場合は、この方法でそれらをチェーンできるはずです。