我有一个包含 <svg>
标签的 SVG 地图,我希望能够附加事件,使我可以单击它们并触发一些事件。 我知道可以使用 jQuery 在多边形元素上附加 click 事件。但是这个地图中的某些区域是使用路径(path)制作的,我希望在路径内单击时触发一些事件,而不是在路径上单击时触发。
如何实现?最好使用 jQuery。
我有一个包含 <svg>
标签的 SVG 地图,我希望能够附加事件,使我可以单击它们并触发一些事件。 我知道可以使用 jQuery 在多边形元素上附加 click 事件。但是这个地图中的某些区域是使用路径(path)制作的,我希望在路径内单击时触发一些事件,而不是在路径上单击时触发。
如何实现?最好使用 jQuery。
如果你使用fill
属性给一个<path>
元素填充颜色,那么在点击它(即填充部分)时将触发事件处理程序:
<path id="sauce" fill="#f00" … />
$('#sauce').on('click',function(){ … });
你可以选择将路径显式填充为颜色 transparent
,鼠标事件仍然会被捕获:
<path fill="transparent" … />
fill="transparent"
会强制浏览器渲染填充(恰好是透明的),而你想要的只是检测鼠标悬停,这正是pointer-events属性专为此设计的。我通过使用fill="none"
和<style> path { pointer-events: visibleFill } </style>
来解决了这个问题。 - Mawg says reinstate Monica