1

ライトボックスには、widgetkit プラグイン (Joomla CMS) を使用しています。widgetkit は fancybox を使用してライトボックスを表示するので、ここに質問を投稿します。

Joomla Web サイトのコンテンツを更新するために AJAX テクノロジを使用していない場合、FancyBox はうまく機能します。AJAX を有効にし、ajax テクノロジを使用して別のページに更新または移動すると、ライトボックス効果がなくなりました。画像自体が新しいウィンドウで開きます。これは、AJAX が DOM を更新し、FancyBox がそれを認識しないためだと思います。AJAXコードのプラグインには、特定のJavaScriptコードを記述できる領域があり、WebサイトがAJAXによって完全にロードされた後にAJAXが実行されます。AJAX が生成したばかりの新しい DOM に FancyBox を初期化するには、そこに何を入力すればよいのか疑問に思っています。

mootools ライトボックス (もしあれば) の場合、次の行を書くだけです: window.fireEvent('domready');

jQuery FancyBox でそれを行う方法がわかりません。

ここにも同じ質問を投稿しました (詳細情報が必要な場合): http://skrij.me/Qv56

4

2 に答える 2

2

$(".fancybox").fancybox();DOM に変更を加えるたびに fancybox (例: ) を呼び出すか、 「ライブ」を使用してクリック ハンドラーをアタッチするバージョン 2 を使用します。

于 2012-06-19T12:40:01.620 に答える
1

ファンシーボックスを初期化するための機能を作成する必要があります。

function fancybox_init(){
        $("a[href*='.jpg'], a[href*='.png']").attr('rel', 'fancybox').fancybox({
            maxWidth  : 800,
            maxHeight : 600,
            fitToView : true,
            width     : '70%',
            height    : '70%',
            autoSize  : true,
            closeClick    : false,
            openEffect    : 'none',
            closeEffect   : 'none'
        });
    } 

そして、ajaxリロードページまたは新しいブロックを追加した後、ajaxメソッドの成功コールバックでこの関数を呼び出すだけです

于 2015-08-18T08:20:58.270 に答える