3

私のページには、次のようにプログラムで作成されたPhotoSwipeギャラリーがあります。

var instance = window.Code.PhotoSwipe.attach(image, options)

次に、ギャラリー内の画像を更新するか、同じ場所に新しいギャラリーを配置します。

同じために新しいギャラリーを作成するとDOM Element、次のエラーが省略されます。

Code.PhotoSwipe.activateInstance:
Unable to active instance as another instance is already active for this target

を使用して要素からインスタンスを切り離しても、Code.PhotoSwipe.detatch(instance)役に立ちませんでした。

ギャラリーを新しい画像で埋める方法や、同じ場所に新しい画像を作成できるように削除する方法はありますか?

4

3 に答える 3

8

そのエラーを回避するために私が見つけた唯一の方法は、unsetActivateInstance前に呼び出すことでしたdetatch

window.Code.PhotoSwipe.unsetActivateInstance(instance);

window.Code.PhotoSwipe.detatch(instance); 
于 2012-03-03T11:17:54.683 に答える
2

を呼び出してインスタンスをデタッチする代わりに、現在アクティブなインスタンスを非表示にすることもできます

window.Code.PhotoSwipe.activeInstances[0].instance.hide(0)
于 2012-04-05T21:40:48.753 に答える
0

上記のすべての提案を試しましたが、どれもうまくいきませんでした。

したがって、私の解決策は、同じIDのギャラリーを2回作成しないことでした。

    instance = window.Code.PhotoSwipe.getInstance(myuniqueid);
    if (window.Code.Util.isNothing(instance)) {
        // Only initialize if there is no gallery with this ID already.
        myPhotoSwipe = window.Code.PhotoSwipe.attach(window.document.querySelectorAll(galleryimagesselector), {captionAndToolbarAutoHideDelay: 0, jQueryMobile: true, preventSlideshow: true, enableMouseWheel: false, enableKeyboard: false}, myuniqueid);
    }
于 2015-02-24T17:27:25.130 に答える