更新:問題を示すJSFIDDLEです
github のファイル ブラウザに似たようなことをしようとしています。
https://github.com/mitsuhiko/flask
(フォルダをクリックしてデモを行います。唯一の違いは、私が必要としているのはショーに適した「スライド」であるということです。)
いくつかのjsonを返し、divを置き換えるために使用されるajax呼び出しがあります。私はそれをほとんど機能させていますが、次の目的で使用するjqueryがわかりません:
- hide() jqueryUI の「スライド」効果に置き換えたい既存の div
- replaceWith を使用してコンテンツを置き換えます (さまざまな理由で html() を使用できません)、replaceWith() である必要がありますが、非表示のままにしておきます
- いくつかの jquery ビヘイビアを新しいコンテンツに再アタッチします (このコードは Drupal 固有ですが、ワンライナーです。他の jquery ビヘイビアを新しいコンテンツに再アタッチします)。コンテンツはまだ非表示です。
- show() jqueryUI の「スライド」効果を持つ新しい div
私は多くの異なることを試しました。私は ajax が非同期であることを知っているので、これをコールバックで実行するか、動作をチェーンする必要があります。これまでのところ、私はこれまでです:
/* this snippet occurs in an $.ajax success: function, argumentWrapper is the div
wrapper to replace, newContent is the new html that will be inserted */
argumentWrapper.hide({
effect: 'slide',
direction: 'left',
complete: function() {
argumentWrapper.replaceWith(function() {
return $(newContent).hide({
complete: function(){
Drupal.attachBehaviors(newContent);
}
}).show({
effect: 'slide',
direction: 'right'
});
});
}
});
これはほとんど機能しますが、スライドして戻る前に、奇妙な「束ねる」効果が得られます. 左側に非常に div がある一時停止のように。
更新:問題を示すJSFIDDLEです