Javascript 具有多个图像和贴图的ImageMapster

Javascript 具有多个图像和贴图的ImageMapster,javascript,jquery,html,imagemapster,Javascript,Jquery,Html,Imagemapster,是否可以将ImageMapster与多个图像和地图一起使用 在我的场景中,有多个图像。每个图像都有自己独特的贴图,一次只显示一个图像。单击一个图像的一部分时,它将更改为另一个具有不同贴图的图像。我通过直接更改元素的src和useMap值来实现这一点。但是,ImageMapster将仅处理第一个图像,其余图像将不会高亮显示。在更改图像/贴图之前和之后,我都尝试过取消绑定和重新绑定ImageMapster,但没有任何帮助 如何使用ImageMapster实现这一点?是的,使用ImageMapster

是否可以将ImageMapster与多个图像和地图一起使用

在我的场景中,有多个图像。每个图像都有自己独特的贴图,一次只显示一个图像。单击一个图像的一部分时,它将更改为另一个具有不同贴图的图像。我通过直接更改元素的src和useMap值来实现这一点。但是,ImageMapster将仅处理第一个图像,其余图像将不会高亮显示。在更改图像/贴图之前和之后,我都尝试过取消绑定和重新绑定ImageMapster,但没有任何帮助


如何使用ImageMapster实现这一点?

是的,使用ImageMapster图像映射可以有多个图像,但如果您尝试动态更改DOM元素,我怀疑您的操作会非常困难

回想一下jQuery如何处理注入元素与DOM创建时存在的元素的区别。对于注入的元素,jQuery必须使用.on方法来捕获它们的事件,是吗?嗯,当您动态地更改DOM元素时,您可以将它们删除/重新注入DOM中。因此,该插件(已初始化为前一个元素)现在必须初始化为新注入的元素,并且必须能够使用.on策略来操作该新元素。这对一个插件来说要求很高

然而,一切都没有失去

上面的JSFIDLE是一个工作示例,它是由开发人员自己的两个示例拼凑而成的,显示了您在问题中描述的大致近似值。两个图像映射在同一页上,但一个最初是隐藏的我只使用两个图像/图像映射,但可能有几个最初是隐藏的,而不仅仅是一个

单击第一个图像映射时,在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"
        }
        ]
});

我希望此解决方案对您有效。

是的,您可以使用imagemapster图像映射拥有多个图像,但我怀疑如果您尝试动态更改DOM元素,您可能会遇到非常棘手的问题

回想一下jQuery如何处理注入元素与DOM创建时存在的元素的区别。对于注入的元素,jQuery必须使用.on方法来捕获它们的事件,是吗?嗯,当您动态地更改DOM元素时,您可以将它们删除/重新注入DOM中。因此,该插件(已初始化为前一个元素)现在必须初始化为新注入的元素,并且必须能够使用.on策略来操作该新元素。这对一个插件来说要求很高

然而,一切都没有失去

上面的JSFIDLE是一个工作示例,它是由开发人员自己的两个示例拼凑而成的,显示了您在问题中描述的大致近似值。两个图像映射在同一页上,但一个最初是隐藏的我只使用两个图像/图像映射,但可能有几个最初是隐藏的,而不仅仅是一个

单击第一个图像映射时,在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时,如果在图像上激活imagemapster,而DIV处于隐藏状态,则图像将保持不可见。也许这是由于我的案例所特有的一些情况,但如果IE8功能对您很重要,我建议您在完全采用此解决方案之前进行一些测试。

您有多少不同的图像和图像映射

除非它们太多,否则我会在不同的div中预加载所有图像和图像映射,并隐藏除第一个之外的所有图像和图像映射。然后可以使用.hide和.show隐藏包含当前图像的DIV,并使用希望显示的图像显示DIV。这样,每个图像都可以有自己的图像映射,而无需动态更改DOM


不过有一个警告:在隐藏div中的图像上激活imagemapster时遇到问题。在IE8中,当显示DIV时,如果在图像上激活imagemapster,而DIV处于隐藏状态,则图像将保持不可见。也许这是由于我的案例所特有的一些情况,但如果IE8功能对您很重要,我建议您在完全接受此解决方案之前进行一些测试。

如果您能展示您尝试解除绑定和绑定的情况,我可能会帮您忙?如果您使用imagemapster插件制作一个-获取此空外壳,那么会更容易提供帮助
加载、编辑并单击更新,然后发布新URL。如果我们能准确地看到你在做什么,以及你是如何做的,灯可能会突然亮起来。我经常在构建JSFIDLE时发现我自己问题的解决方案,以允许其他人帮助我。如果你能展示你解除绑定和绑定的尝试,也许我可以提供帮助?如果你做了一个-在加载imagemapster插件的情况下获取这个空壳,编辑并单击更新,然后发布新的URL,那么帮助会容易得多。如果我们能准确地看到你在做什么,以及你是如何做的,灯可能会突然亮起来。当我建立一个JSFIDLE让别人帮助我的时候,我经常会发现我自己问题的答案。哦,我想在我写我自己的答案之前,我必须学会更好地阅读别人的答案。直到最近,我才意识到我的答案或多或少是@gibberish answer的翻版。对不起。我的警告仍然适用。哦,我想在我写自己的答案之前,我必须学会更好地阅读别人的答案。直到最近,我才意识到我的答案或多或少是@gibberish answer的翻版。对不起。我的警告仍然适用。