8

看看这个jsFiddle

将jQuery 与 SVG (Raphael 2.0) 结合使用时, mouseenter/mouseleave似乎没有正确触发。我知道开箱即用的 SVG jQuery 不是 100% 兼容 SVG,但是,据我所知,它似乎只影响 IE9。

奇怪的是,如果您快速将鼠标移开/移出 svg 元素(确保您在这样做时立即离开 HTML 窗格)并返回到它,事件确实会触发(但不是每次都触发)。只是为了确保这不是一个普遍的问题,onclick每次都连接了可以正常工作的事件。

只是想知道是否有人知道这是一个错误还是一个已知问题?

4

2 回答 2

2

这是 1.7.2 中的一个错误。见

如果我使用 jQuery (edge),问题就会消失,因此应该在下一个预定版本 (1.8) 中修复。

于 2012-07-13T07:45:49.613 回答
0

我认为重要的是要注意 jQuery 1.8.2 和 android via phonegap 没有使用 jq-mobile。我看到触摸和鼠标事件随机选择并且不同步......这意味着细微的差异触发 mouseEnter 和 click 与不同的触摸触发 touchStart 相比(有时如果没有输入甚至当前已发送 mouseEnter 发生)然后 2 touchEnds。如果您有一个 touchEvent 触发 mouseEnter,则第二个触摸模式(开始、结束、结束)发送一个 mouseLeave(假设您不会通过细微的点击差异随机触发点击组合)。

我的期望是它们应该在两种情况下一起触发,除了一个(触摸事件)更多地用于多点触控需求,或者认识到在通过触摸界面模拟点击事件之后不会有 mouseLeave 事件(不知何故?.. .)。我的另一个期望是,如果我没有为鼠标事件处理或注册监听器,但我为触摸事件做,反之亦然,根据监听或拦截的内容将发送或不发送不同的事件(返回 false?或通过 preventDefault 等停止冒泡)。

无论如何,在我看来,目前您需要以随机未连接的不可预测方式处理这两种类型的事件,这对我来说意味着丢弃鼠标世界中最好描述为触控设备上的“结束”事件。

基本上我认为触摸不应该发送结束/进入事件,而点击也应该相当于触摸,如果我正在监听触摸,preventDefault 应该取消所述鼠标事件。

无论如何,将两者都发送并让我解决是最有意义的。我怀疑的困惑在于您只收听了它发送的事件的一半(缺少接触)。……祝你好运!这些想法可能会帮助某人在更高级别或更低级别的开发团队中处理混乱。(这应该归咎于浏览器级别吗?我想是的。)

于 2012-10-11T04:03:39.760 回答