我遇到了一个有趣的 bug (?),如果你使用 <use> 作为链接(例如图标)嵌入 SVG,那么图标本身将无法在 jQuery 中注册点击事件,但点击文本则可以。我认为这是由于 SVG 事件没有冒泡导致的?
如果直接嵌入 SVG,无论你点击文本还是图标,链接都会触发。
我创建了一个简单的测试用例,可以在这里查看: SVG <use> bug test case。
我遇到了一个有趣的 bug (?),如果你使用 <use> 作为链接(例如图标)嵌入 SVG,那么图标本身将无法在 jQuery 中注册点击事件,但点击文本则可以。我认为这是由于 SVG 事件没有冒泡导致的?
如果直接嵌入 SVG,无论你点击文本还是图标,链接都会触发。
我创建了一个简单的测试用例,可以在这里查看: SVG <use> bug test case。
在SVG元素上使用pointer-events: none;
。这对我有用。
该元素不是鼠标事件的目标;但是,如果那些后代元素的指针事件设置为其他值,则鼠标事件可能会针对其后代元素。在这些情况下,在事件捕获/冒泡阶段期间,鼠标事件将在适当的时候触发此父元素上的事件监听器,以便前往/从后代元素。
https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events
pointer-events: all;
才能让 SVG 元素触发点击事件,而不是 none。这个答案对我来说很误导,但我可能只是没理解其中的某些内容。 - Gherman我曾经遇到过同样的问题,我在链接上使用了display: block
或display: inline-block
,然后问题得到了解决。