2010-12-04 8 views
1

私のサイトでFancyboxを使って他のページ(外部ページ)へのリンクを開きます。DIVリロード後にJQuery Fancyboxが動作しない

基本的にユーザーが画像をクリックすると、外部ページを含むfancyboxが開きます。イメージリンクは、別のページ(親)上のDIV内に表示されるページ(子)内に含まれます。親は、画像とリンクを変更させるさまざまなパラメータを持つ子ページを再ロードすることによって、DIVのデータをリロードする機能を備えています。

これはすべて最初の負荷で完全に機能します。しかし、DIVが異なるデータを含む子ページで再ロードされた後で、fancyboxポップアップはもはや機能しません。私はその後、ページ上でF5の更新を行う場合、それは再び動作します。しかし、最初の負荷でのみ。

イメージリンクのセットアップfancyboxに子ページのコード:

$.noConflict(); 
$(document).ready(function() { 
    $(".userdetailslink").fancybox({ 
     'width'    : '80%', 
     'height'   : '80%', 
     'autoScale'   : false, 
     'transitionIn'  : 'elastic', 
     'transitionOut'  : 'elastic', 
     'type'    : 'iframe' 
    }); 
}); 

私も同じ結果で、次の試してみた:

$.noConflict(); 
$(".userdetailslink").ready(function() { 
    $(".userdetailslink").fancybox({ 
     'width'    : '80%', 
     'height'   : '80%', 
     'autoScale'   : false, 
     'transitionIn'  : 'elastic', 
     'transitionOut'  : 'elastic', 
     'type'    : 'iframe' 
    }); 
}); 

任意の助けをいただければ幸いですが。

答えて

0

divをロードするのにAJAXメソッドを使用していますか?コールバック関数を使用して、ロードされたコンテンツにイベント処理を適用できます。

$("div").load("url", function(){ 
     $(".userdetailslink").fancybox({ 
    'width'    : '80%', 
    'height'   : '80%', 
    'autoScale'   : false, 
    'transitionIn'  : 'elastic', 
    'transitionOut'  : 'elastic', 
    'type'    : 'iframe' 
    }); 

}); 

このように、ロード後も実行されます。もちろん、あなたは初期ロードをします。

+0

ありがとうございます、あなたの返事は理にかなっていますが、私は試してみましたが、それはまだ最初の読み込み時にのみ読み込まれています。私は、コールバック関数に警告を追加して、すべての負荷でコールされているかどうかを確認しました。それはそうです。しかし、コールバックにfancybox呼び出しを追加するとすぐに、警告さえも一度だけ表示されます。奇妙な!何かご意見は? – hermanschutte

+0

更新:fancyboxコールの前に別のアラートを追加しました。それはすべての負荷で実行されますが、fancybox後の負荷は最初の負荷でのみ呼び出されます。同じ要素に対してfancyboxを複数回呼び出すとエラーが発生する可能性がありますか?要素からfancyboxを取り外す方法に関するアイデアはありますか? – hermanschutte

関連する問題