0

Fancybox js および css コードを条件付きでロードし、要素が存在し、特定のページにいる場合にのみ要素で実行しようとしています。これまでのところ、次のコードを試してきました。

yepnope({
test : jQuery('body').hasClass('edizioni'),
yep  : ['/assets/css/jquery.fancybox.css','/assets/js/libs/jquery.fancybox.pack.js','/assets/js/libs/jquery.mousewheel-3.0.6.pack.js',
        jQuery("#gallery a").fancybox()]
});

私は得るUncaught TypeError: Object [object Object] has no method 'fancybox'

jquery は正常に機能しており、リソース jquery.fancybox.pack.js が正しく読み込まれていると思います。私の実装の何が問題になっていますか?

4

1 に答える 1

1

yepnope のコールバック機能を使用する必要があります。あなたが今持っている方法では、jQuery("#gallery a").fancybox()リクエストと同時に実行しようとしfancybox.pack.jsます. ファイルを順番にロードしません。リソースが読み込まれるたびにコールバックがトリガーされるため、URL を確認する必要があります。

これは機能するか、少なくとも開始する必要があります。

yepnope({
    test : jQuery('body').hasClass('edizioni'),
    yep  : ['/assets/css/jquery.fancybox.css','/assets/js/libs/jquery.fancybox.pack.js','/assets/js/libs/jquery.mousewheel-3.0.6.pack.js'],
    callback: function (url, result, key) {
        if(url === "/assets/js/libs/jquery.fancybox.pack.js"){
            // Fancybox has loaded, it's safe to call it now
            jQuery("#gallery a").fancybox();
        }
    }
});
于 2013-02-06T15:25:32.100 に答える