如何使用 Jquery 突出显示 svg 地图?

Posted

技术标签:

【中文标题】如何使用 Jquery 突出显示 svg 地图?【英文标题】:How to use Jquery to highlight svg map? 【发布时间】:2012-12-20 22:45:57 【问题描述】:

我在使用 jquery 突出显示地图中的状态时遇到问题。我已经使用 javascript 实现了它。 ` SVG Illustrator 测试

    <object data="map_with_hover.svg" type="image/svg+xml" id="alphasvg"  ></object>
<script>
    var a = document.getElementById("alphasvg");

    //it's important to add an load event listener to the object, as it will load the svg doc asynchronously
    a.addEventListener("load",function()
        var svgDoc = a.contentDocument; //get the inner DOM of alpha.svg
        var delta = svgDoc.getElementById("states"); //get the inner element by id
        delta.addEventListener("mouseover",function(evt) evt.target.setAttributeNS(null,"opacity","0.5");,false);    //add behaviour
        delta.addEventListener("mouseout",function(evt) evt.target.setAttributeNS(null,"opacity","1");,false);    //add behaviour
    ,false);
</script>

</body>
</html>

`

通过此代码状态可以轻松突出显示,但我想在 jquery 中执行此操作,因为我还想添加工具提示,以便在鼠标悬停时也显示状态名称。 所以基本上我想知道如何使用 SVG 的 id 或类或标签来通过 jquery 执行不同的操作。

【问题讨论】:

@Phrogz 这不是真的,可以通过 jQuery 选择与 HTML 非常相似的 SVG 元素(使用 id 对我来说效果很好)。不同之处在于 SVG 文件必须直接嵌入到 DOM 中。在这种情况下,您是正确的,因为他使用的是对象标签。 @Jlange 我感到尴尬并已更正,现在已经删除了我的错误信息。谢谢。 :) @Krunal Shah 我下面的解决方案对您有帮助吗? 【参考方案1】:

有一个名为 jQuery SVG 的库,这可能会对您有所帮助。

【讨论】:

不明白...如果我知道如何在 svg 文件或这个 html.. 中使用 jquery 会更好,这样我就可以在我的 jquery 选择器中直接使用 svg 元素。 【参考方案2】:

您应该将文件直接嵌入到您的 HTML 中(使用 SVG 标签)。这将允许您使用纯 jQuery 选择不同的 SVG 元素。见here

请随意使用此代码,因为它非常基础,我从 Wikipedia 中提取了地图。

【讨论】:

以上是关于如何使用 Jquery 突出显示 svg 地图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用传单和 jQuery Birdseye 在点击时突出显示标记

如何在鼠标悬停时突出显示图像地图的某些部分?

在事件动作上突出显示 SVG <g> 中的多个路径元素

jQuery Maphilight。在突出显示新之前切换alwaysOn

如何在 ios 地图中突出显示国家/地区

使用 R 在美国地图中突出显示邮政编码