2012-03-25 10 views
0

Easy FancyBox(jQuery FancyBoxプラグインのWordPressプラグイン版)を使用しています。私はそうのように、コールバックとしてFancyBoxを再初期化しようとしていjQueryの ".load()"メソッドを使用してフェッチしたコンテンツのfancyboxを再初期化できません。

$('.jspPane').empty().load(href + ' #load-content'); 

:私は、クリックイベントに応答してdiv要素をロードするには、次のコードを使用しています

$('.jspPane').empty().load(href + ' #load-content', function(){ 
    $('a[rel="gallery1"]').fancybox(); 
}); 

しかし、それは動作しません。 。誰かがこのようなことを経験していますか?

もし私が作成しているサイトへのリンクがあれば、こちらをご覧ください:http://ecbiz119.inmotionhosting.com/~fullbo6/「写真」ナビゲーションリンクをクリックすると、FancyBoxに表示されるべき要素が読み込まれます。

ありがとうございます!

フォローアップ:

fancyboxをバインドする.on()メソッドを使用しようとした後、私はまだ運がありませんよ。

jQuery(document).ready(function ($) { 
    $('#load-content').on('focusin', function() { 
     $('a.photos-thumb').fancybox(); 
    }); 
    $('#main-nav .page-item-6 a').addClass('active'); 

    $('#page-content').jScrollPane({ 
     autoReinitialise: true 
    }); 

    $('#page-content-container, #buy-stuff').hide(); 

    $('#main-nav').not('.page-item-6').find('a').on('click', function (e) { 
     e.preventDefault(); 
     var href = $(this).attr('href'); 
     $('#main-nav a').removeClass('active'); 
     $(this).addClass('active'); 
     $('#slide-show-container, #updates-wrap .container').hide(); 
     $('.jspPane').empty().load(href + ' #load-content'); 

     $('#page-content-container, #buy-stuff').show(); 
    }); 

    $('#main-nav .page-item-6').find('a').on('click', function (e) { 
     e.preventDefault(); 
     var href = $(this).attr('href'); 
     $('#main-nav a').removeClass('active'); 
     $(this).addClass('active'); 
     $('#slide-show-container, #updates-wrap .container').show(); 
     $('#page-content-container, #buy-stuff').hide(); 
    }); 

}); 
+0

私の編集した回答を参照(更新) – JFK

答えて

0

Fancyboxのv1.3.4(使用しているバージョン)を動的に追加要素をサポートしていません、しかし、あなたは新しいものに結合することができる:場合、それは任意のヘルプですが、ここに私のスクリプトからのjQueryコードのすべてのファイルがあります要素はjQuery .on()メソッドを使用します。

Check this postそれを行う方法を学ぶなど、独自のセレクタにコードを微調整する

$("#load-content").on("focusin", function(){ .... 

UPDATE

あなたがロードされています。コメントやソースコードのさらなる分析に基づいて、あなたのjsファイルは次の順になります:

jquery.js?ver=1.7.1 
scripts.js?ver=3.3.1 
jscrollpane.js?ver=3.3.1 
jquery.fancybox-1.3.4.pack.js?ver=1.3.4 

scripts.jsファイル(.on()メソッド)は、fancyboxがまだロードされていないときにfancyboxを初期化しようとします。

てみ順序を変更し、カスタムスクリプトは次のように最後にファイルを残して:あなたの親切な助け、JFKのために再度

jquery.js?ver=1.7.1 
jscrollpane.js?ver=3.3.1 
jquery.fancybox-1.3.4.pack.js?ver=1.3.4 
scripts.js?ver=3.3.1 
+0

ありがとう、JFK。私は質問を投稿する前にあなたの記事を実際に読んでいました。なんらかの理由で、私のためにはうまくいかなかった。私は今日のより良いところでこれと闘ってきました。私は壁に向かって私の頭を叩く準備ができています。 –

+0

JFK、あなたの助けてくれてありがとう。スクリプトファイルをフッターにロードしましたが、まだ運がありません。 * sigh * –

+0

スクリプトファイルは '#load-content'コンテナの後ろにあるので、' .on() 'は初期化できないので、' 'セクションにそれらを置くことをお勧めします。 – JFK

0

感謝を。さらに手を加えて(そして髪を引っ張って)、ついにそれを働かせました。私は別のアプローチを使用したので、他の人に役立つことを期待してここに投稿しています。

$('#main-nav') 
.not('.page-item-6') 
.find('a') 
.on('click', function(e) 
    { 
     e.preventDefault(); 
     var href = $(this).attr('href'); 
     $('#main-nav a').removeClass('active'); 
     $(this).addClass('active'); 
     $('#slide-show-container, #updates-wrap .container').hide(); 
     $('.jspPane') 
      .empty() 
      .load(href + ' #load-content', function() 
       { 
        $('a.photos-thumb').fancybox(); 
       } 
      ); 
     $('#page-content-container, #buy-stuff').show(); 
    } 
); 
0

は、このソリューションは、私を助けた(jQueryの1.7.2と1.3.4 fancybox):

オープンjquery.fancybox要旨は、私は、)(.LOADするコールバックとしてfancyboxと呼ばれるように似ていることです-1.3.4.jsとこのソリューションは、私の問題を解決し、この

$.fn.fancybox = function(options) { 
    if (!$(this).length) { 
     return this; 
    } 

    $(this) 

     .unbind('click.fb') 
     .live('click.fb', function(e) { 
     $(this).data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {}))) 
      e.preventDefault(); 

のようにライン790について、それを編集し、それ以外でも初期化がデフォルトのように残って何も変更する必要はありません。

シンプルでクリーンです。希望が役立ちます。

関連する問題