39

我遇到了一个有趣的错误(?),如果您使用 <use> 作为链接的一部分(例如图标)嵌入 SVG – 图标本身不会在 jQuery 中注册单击事件,但单击文本会。我认为这是由于 SVG 事件没有冒泡?

如果您直接嵌入 SVG,无论您单击文本还是图标,链接都会触发。

我创建的一个简单的测试用例可以在这里看到: SVG <use> bug test case

4

3 回答 3

65

pointer-events: none;在 svg 上使用。它对我有用。

元素永远不是鼠标事件的目标;但是,如果这些后代将指针事件设置为其他值,则鼠标事件可能会针对其后代元素。在这些情况下,鼠标事件将在事件捕获/冒泡阶段期间适当地触发此父元素上的事件侦听器。

https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events

于 2014-11-17T00:09:28.070 回答
5

我有同样的问题。我使用的修复方法是在 svg 上放置一个透明的 div。但这当然不理想。

于 2014-09-09T12:41:45.590 回答
0

我遇到了同样的问题,我在链接上使用了display: blockordisplay: inline-block并且它有效。

于 2018-01-25T15:32:09.207 回答