0

画像は経由で描画されます$.ajax

次に、Photoswipeインスタンスが内部に作成されます$.ajax

ユーザーがブラウザの戻るボタンをクリックしたときにPhotoswipeインスタンスをデタッチしようとしましたが、デタッチできませんでした。

誰かがこれを克服するための可能な解決策を知っていますか?

4

2 に答える 2

0

これがあなたの役に立つかどうかはわかりませんが...

クラス で PhotoSwipe をページにgallery-pageアタッチし、実際の PhotoSwipe インスタンスをgallery<a href="../path/image.jpg" rel="external">...</a>.

また、各ページにIDを付与します。したがって、index.html にはid="gallery1".

次に、script.jsPhotoSwipe を.galleryクラスにアタッチするために実際に呼び出すファイルで、次のように if ステートメント (ページごとに 1 つ) を使用します。

// ..... bunch of JS, including PhotoSwipe core

// Create "exists" function for PhotoSwipe code
jQuery.fn.exists = function(){return this.length>0;}

// Create PhotoSwipe instance for a page that has id="gallery1"
if ($('#gallery1').exists()) {
        // Do something
        var myPhotoSwipe = $("#gallery1 .gallery a").photoSwipe({ 
            allowUserZoom: false,
            backButtonHideEnabled: true,
            enableMouseWheel: false, 
            enableKeyboard: false,
            cacheMode: Code.PhotoSwipe.Cache.Mode.aggressive,
            captionAndToolbarAutoHideDelay: 0,
            captionAndToolbarShowEmptyCaptions: false,
            jQueryMobile: true
        });
} // .... continue on for other page IDs

これをページごとに行い、特定のページごとに必要なものに応じて PhotoSwipe 設定をカスタマイズします。関数を作ったのでexists、前回と違うIDのページならPhotoSwipeのインスタンスを削除し、違っていればid="galleryN"その設定・画像を代わりに貼り付けます。

これがお役に立てば幸いです...お知らせください。

于 2012-09-06T13:03:46.897 に答える
0

最後に解決策を見つけました。以下を参照してください

$.ajax({
        URL: URL_TO_GET_JSON、
        成功: 関数 (json, ステータス) {
            var p = [];
            $.each(json, 関数(a,b){
                // ここに画像を描画します。
            });
            $('.gallery').html(photo.join(''));


        // ここでインスタンスを作成        
            var myPhotoSwipe = $(".gallery a").photoSwipe({
                enableMouseWheel: false,
            }))

          /************ ここでインスタンスの設定を解除します *****************/

            $(document).bind('pagebeforechange', function(e) {
                if ($('.ps-carousel').length) {
                    $('body').removeClass('ps-active');
                    var photoSwipe = window.Code.PhotoSwipe;
                    var photoSwipeInstance = photoSwipe.getInstance($(myPhotoSwipe).attr('id'));
                    if (typeof photoSwipeInstance != "未定義" && photoSwipeInstance != null) {
                        photoSwipe.unsetActivateInstance(photoSwipeInstance);
                        photoSwipe.detatch(photoSwipeInstance);
                    }
                }
            });
        }
    });
于 2012-09-10T14:31:30.773 に答える