我的页面上有一个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)
从Element中分离实例也无济于事。
有关如何使用新图片填充图库或删除它的任何想法,以便我可以在同一个地方创建一个新图片吗?
答案 0 :(得分:8)
我发现避免该错误的唯一方法是在unsetActivateInstance
之前调用detatch
:
window.Code.PhotoSwipe.unsetActivateInstance(instance);
window.Code.PhotoSwipe.detatch(instance);
答案 1 :(得分:2)
您也可以隐藏当前的活动实例,而不是通过调用
来删除它window.Code.PhotoSwipe.activeInstances[0].instance.hide(0)
答案 2 :(得分: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);
}