javascript - 将 MagnificPopup 与 ElevateZoom 结合起来

标签 javascript jquery

各位 JavaScript/jquery 专家大家好。

我希望有人能够帮助我,因为我在尝试结合时遇到了困难 MagnificPopupElevateZoom .

如果只有一张图像,我就可以让 ElevateZoom 工作。但在画廊模式(几张图像)下,它会严重失败。

这是一个使用一张图像的示例。

enter image description here

您可以看到弹出窗口后面的图像。如果有多个图像,则不起作用。

我对 magnificpopup.js 做了一些更改:

在“打开:函数(数据){...”

我已添加

$(".mfp-img").elevateZoom(); 

就在

之前
return data;

在“getImage:函数(项目,模板){...”

我已添加

var att = document.createAttribute('data-zoom-image');
att.value = item.src;
img.setAttributeNode(att);

就在之前

item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);
img.src = item.src;

这效果很好,但只能处理一张图像。一旦有更多,它就会失败。不幸的是,我自己无法弄清楚所需的修改。任何帮助将不胜感激。

致以诚挚的问候

妮琪

最佳答案

我明白了!

我没有执行上面添加的代码,而是执行了以下操作:

在“getImage:函数(项目,模板){...”

就在之前

_mfpTrigger('ImageLoadComplete');

我已添加

$("#" + item.img[0].id).elevateZoom();

在“close: function () {...”

就在之前

mfp.isOpen = false;

我已添加

$('.zoomContainer').remove();

在“getImage:函数(项目,模板){...”

我已添加

img.id = item.el[0].id;
var att = document.createAttribute('data-zoom-image');
att.value = item.src;
img.setAttributeNode(att);

就在之前

item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);
img.src = item.src;

现在,无论使用多少图像,一切都可以正常工作。

致以诚挚的问候

关于javascript - 将 MagnificPopup 与 ElevateZoom 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30348941/

相关文章:

javascript - 通过复选框模拟 CTRL 按键

javascript - 每 10 秒运行一次 php 脚本

jquery - 泽西 REST + CORS + Jquery AJAX 调用

jquery - 类型 'modal' Angular6 上不存在属性 'JQuery'

javascript - 如何在 ASP.NET MVC 中创建用于删除的 Bootstrap 4 确认模式

javascript - 设置整个网页(浏览器的窗口)的背景颜色

javascript - 为什么新行在此 javascript 警报窗口中不起作用?

javascript - jQuery $ ('#form' ).submit() 与 javascript document.form.submit()

jquery - 优化js可拖动的最佳方法

javascript - 如何在不阻止功能的情况下编辑此 Javascript?