2011-02-03 23 views
-1

私のアプリではfancybox要素をクリックして、私はAJAXをHTMLページをロードしています。しかし、そのリモートページでは、ページロード時にデータを読み込むAJAX(私はそれが不思議です)を使用するJavaScriptロジックをいくつか持っています。今は、ファンシーボックスダイアログを表示したり、リモートページ内のデータが完全にロードされるまでアニメーションのロードを継続したりすることは望ましくありません。 これを行う方法はありますか?jQuery FancyBox late AJAX loading

これまでのところ私は本当に醜いです - 私は、ファンシーボックスのダイアログボックスに表示される空のページを読み込み、数秒後にそのページのコンテンツが読み込まれます。そのため、私は寸法とセンタリングに問題があります。

+0

違反はありませんが、少し考え直す必要があるように聞こえます...なぜダブルアヤックスですか? 2番目のものはサーバー側のカール(等価な挿入)呼び出しではありませんか? – JohnO

+0

@ JohnO、それは問題です。この場合、私はASP.NETの問題であるサーバーサイドコードを置くことはできません。 –

答えて

0

$.fancybox.showActivity()および$.fancybox.hideActivity()はお友達です。あなたの要件に応じて順番にそれらを呼び出します。たとえば、$ .fancybox.showActivity()をajax呼び出しのコールバック(初期のボックスが表示されているとき)にコールして、プリローダ/アニメーションを再表示させ、実際のページ/ページを表示するときに$ .fancybox.hideActivity()データは後のajax呼び出しから取り出され、アニメーションが消えます。

$('a.magical').fancybox({ 'callBackOnShow': function() { $('#fancybox-wrap').hide(); $.fancybox.showActivity(); } });

あなたのアンカーID /クラスでa.magical交換し、それにあなたのfancyboxの設定を追加します。このような

+0

アニメーションだけを表示する以外のことはしません。私のケースでは、コンテンツが読み込まれるまで、ファンシーボックスダイアログが表示されないようにしたいのです。 –

+0

あなたは言った:_今、私はファンシーボックスダイアログ**を表示したくない、またはリモートページ内のデータが完全にロードされるまでアニメーションの読み込みを表示し続けるだけです**これを行う方法はありますか?最終データがロードされるまで表示されます! –

+0

@ user253011、はい、私は言いましたが、「読み込み中のアニメーションを表示し続ける」とは、空のダイアログを表示し、その上にアニメーションを表示するという意味ではありませんでした。 –

0

トライコールバック。 暫定ページの取得にfancyboxのボタンをクリックすることで、)最初に$ .fancybox.showActivity(続くカスタムjqueryのAJAX呼び出しを行う [CUSTOM AJAXを使用して]:

+0

'$( '#fancybox-wrap')hide()'は私のためのオプションではありません。この段階でfancyboxダイアログuiは既に初期化されており、幅と高さは既に設定されています。この段階の後でこのダイアログの内容を変更するのは本当に苦しいハックです。自分のAjax完了イベントの後にfancyboxのshow関数を起動させたい。 –

0

さてさて、ここで、それがどのように動作するかです。 ajax呼び出しが暫定ページから行われたときは、隠れたdivにデータを取り込み、インライン型の(ajaxのものとは対照的に)fancybox開始呼び出しの後続呼び出しを行います(fancyboxを起動するために隠れた/空のアンカーを使用しますアクションを開き、$( '#hidden_​​a')をクリックします(click())。 fancyboxが表示されると、プリローダーは閉じます。