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 创建两次图库:

    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 回答