Here's what's going on:
1. For delegated events,
jQuery.event.dispatch checks every element from the event target up to the delegate to see if one matches the delegation selector.
2. When possible, that check takes a fast approach that passes a seed set to Sizzle
3. Sizzle runs
Expr.filter matchers against the seed, which in many cases (including this one) assume the availability of
.getAttribute or other DOM methods
4. However, the
SVGElementInstance elements generated by SVG
use elements have a rather limited interface which does not include any of those methods, so passing them to a matcher is almost guaranteed to throw.
If wontfix is not an acceptable resolution for the reasons you mentioned, we should do... something... in
dispatch. The most user-friendly method would be similar to
cur = cur.correspondingUseElement || cur within the
cur = event.target loop.
parentNode points to the wrong place anyway) is smaller, but would mean losing the event entirely.
Either way, there will be a (small) performance hit in this hot path from the additional property access on