将事件附加到SVG路径

Gni*_*ohz 23 javascript jquery svg

我在带有<svg>标签的html中有一张SVG地图.我想附加事件,以便我可以点击它们并触发一些事件.我知道我可以在多边形元素上使用jQuery附加click事件.但是这个地图中的某些区域是使用路径制作的,当我点击路径内部而不是路径时,我想触发一些事件.

这样做的方法是什么?使用jQuery是首选.

Phr*_*ogz 26

如果你fill一个<path>那么它里面点击(在填充)将触发事件处理程序:

演示:http://jsfiddle.net/TmsrP/1/

<path id="sauce" fill="#f00" … />    
Run Code Online (Sandbox Code Playgroud)
$('#sauce').on('click',function(){ … });
Run Code Online (Sandbox Code Playgroud)

您可以选择显式填充路径,但transparent仍会捕获颜色和鼠标事件:

演示:http://jsfiddle.net/TmsrP/2/

<path fill="transparent" … />
Run Code Online (Sandbox Code Playgroud)

  • 事实证明,你可以将fill-opacity设置为0,并且好好去! (2认同)
  • 在[我的问题](http://stackoverflow.com/questions/42543287/detect-click-inside-svg-path-using-angularjs)上,FireFox开发人员指出`fill ="transparent"`正在强制浏览器当你想要的只是检测一个专门设计了pointer-events属性的鼠标时,渲染填充(恰好是透明的).我用`fill ="none"`和`<style> path {pointer-events:visibleFill} </ style>解决了这个问题. (2认同)