Подтвердить что ты не робот

События SVG-щелчка не срабатывают/пузырятся при использовании элемента <use>

Я столкнулся с интересной ошибкой (?), в которой, если вы вставляете SVG, используя <use> как часть ссылки (например, значок) - сам значок не регистрирует событие click в jQuery, но нажатие текст делает. Я думаю, это связано с тем, что события SVG не пузырятся?

Если вы встроили SVG напрямую, эта связь запускается независимо от того, нажимаете ли вы текст или значок.

Простой тестовый пример, который я создал, можно увидеть здесь: Пример теста ошибок SVG <use> .

4b9b3361

Ответ 1

Используйте pointer-events: none; на svg. Это сработало для меня.

Элемент никогда не является объектом событий мыши; однако события мыши может ориентироваться на его элементы-потомки, если те потомки имеют указатели-события заданы для другого значения. В этих условиях мышь события вызовут прослушиватели событий на этом родительском элементе как подходящие по пути к/из потомка во время мероприятия фазы захвата/пузырька.

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

Ответ 2

У меня была та же проблема. Исправление, которое я использую, - это просто установить прозрачный div над svg. Но это, конечно, не идеально.