我有一个SVG地图的世界(基于一个public domain file from wikipedia),与生成的CSS突出显示个别国家。
我需要一个添加鼠标悬停工具提示包含有关每个国家的额外数据,这些数据将由PHP提供。
我是一名经验丰富的web程序员,但直到现在还没有使用过SVG。要在用户的鼠标下显示文本工具提示,并在鼠标光标下显示有关特定SVG节点的信息,最佳方法是什么?
注这个SVG充满了很好的id
和class
属性,旨在方便这种使用。
我需要这是作为实际的跨浏览器,但很高兴禁用一些浏览器的功能(旧版本的Internet Explorer)。
发布于 2012-05-01 09:15:19
检测鼠标悬停事件并访问标题元素组information
title
上面有没有哪部分是你做不到的?
编辑:回答下面评论中的大量问题:
SVG你可以把你的脚本放在内部或者外部的嵌入
class="foo"
属性:var foos = document.querySelectorAll('.foo');var foos = document.getElementsByClassName('foo');
或者,您可以基于结构进行查询;例如,如果每个国家/地区都是一个包含在<g id="countries">
中的<path>
,那么您可以使用:
var countries =document.querySelectorAll(‘#国家路径’);
但是,如果您拥有的只是一个if数组,那么您需要执行以下操作:
var countryIDs =“美国”,“巴西”,…;//老学校var countries = [];for (var i=countryIDs.length;i--;){ countriesi=document.getElementById(countryIDsi);} //新学校var国家=countryIDs.map(i=countryIDs.length(Id){ document.getElementById(id);});
function showTooltip(evt){ var element = evt.target;//您的代码在这里} countries.forEach(function(el){ el.addEventListener('mouseover',showTooltip,false);});
或者,您可以只将事件处理程序附加到一个公共祖先,然后在那里处理它:
svg.addEventListener('mouseover',function(evt){ var
<script>
放在</svg>
之前是最简单的,但如果你愿意,你可以把它放在最上面,而且它只在文件加载完成时才起作用,例如:window.addEventListener('load',function(){ //将所有代码放在这里},false);
发布于 2013-08-21 17:55:45
You can use append svg title to view additional data.
// Here we add an SVG title element the contents of which is effectively rendered in a tooltip
.append("svg:title")
.text(function(d) {return "Name:"+d.Name;});
We can use this tooltip along with all svg element. Here d is a json object form this we are parsing the data.
https://stackoverflow.com/questions/10392238
复制相似问题