是否可以将 ImageMapster 与多个图像和地图一起使用?
在我的场景中,有多个图像。每张图片都有自己独特的地图,一次只显示一张图片。当单击一个图像的一部分时,它会更改为具有不同地图的另一个图像。我通过直接更改元素的“src”和“useMap”值来做到这一点。但是,ImageMapster 只会对第一张图像起作用,其余的不会突出显示。我曾尝试在更改图像/地图之前和之后取消绑定和重新绑定 ImageMapster,但这无济于事。
如何使用 ImageMapster 进行这项工作?
是否可以将 ImageMapster 与多个图像和地图一起使用?
在我的场景中,有多个图像。每张图片都有自己独特的地图,一次只显示一张图片。当单击一个图像的一部分时,它会更改为具有不同地图的另一个图像。我通过直接更改元素的“src”和“useMap”值来做到这一点。但是,ImageMapster 只会对第一张图像起作用,其余的不会突出显示。我曾尝试在更改图像/地图之前和之后取消绑定和重新绑定 ImageMapster,但这无济于事。
如何使用 ImageMapster 进行这项工作?
是的,您可以使用 imagemapster 图像映射来处理多个图像,但我怀疑如果您尝试动态更改 DOM 元素,您会遇到非常困难的事情。
回想一下 jQuery 如何处理注入元素与创建 DOM 时存在的元素的区别。对于注入的元素,jQuery 必须使用.on()
方法来捕获它们的事件,是吗?好吧,当您动态更改 DOM 元素时,您会在 DOM 中删除/重新注入它们。因此,已初始化为前一个元素的插件现在必须初始化为新注入的元素,并且它必须能够使用.on()
策略来操作该新元素。这对插件提出了很多要求。
然而,一切都没有丢失。
上面的 jsFiddle 是一个工作示例,由开发人员自己的两个示例拼凑而成,显示了您在问题中描述的粗略近似值。两个图像映射在同一页面上,但一个最初是隐藏的(我只使用两个图像/图像映射,但可能有几个最初隐藏,而不仅仅是一个)。
单击第一个图像映射时,在 imagemapster 的 onClick 回调中,我隐藏包含该图像的 div 并取消隐藏下一个图像 div。真的很简单:
var image = $('#vegetables');
image.mapster(
{
fillOpacity: 0.4,
onClick: function (e) {
var newToolTip = defaultDipTooltip;
$('#statemapDIV').show(); <====================
$('#veggieDIV').hide(); <====================
},
toolTipClose: ["tooltip-click", "area-click"],
areas: [
{
key: "dip",
toolTip: defaultDipTooltip
},
{
key: "asparagus",
strokeColor: "FFFFFF"
}
]
});
我希望这个解决方案对你有用。
你有多少不同的图像(和图像映射)?
除非它们太多,否则我会将所有图像和图像映射预加载到不同的 DIV 中,并隐藏除第一个以外的所有图像。然后您可以使用 .hide() 和 .show() 隐藏包含当前图像的 DIV 并显示带有您希望显示的图像的 DIV。这样,每个图像都可以拥有自己的图像映射,而无需动态更改 DOM。
不过有一个警告:我在隐藏 DIV 中的图像上激活 imagemapster 时遇到问题。在 IE8 中,当显示 DIV 时,如果在隐藏 DIV 时在图像上激活了 imagemapster,则图像将保持不可见。也许这是由于我的案例的某些特定情况,但如果 IE8 功能对您很重要,我建议您在完全接受此解决方案之前进行一些测试。