4

我希望标题足够准确,可以描述我所面临的问题。

我有一个div(尝试了多种不同的东西:a, span, button, 都面临同样的问题)当它被点击时 onclick 事件不会触发,即使 cssdiv:active会被调用。

这似乎是由于在div:active我设置top: 6px中做出“下推”之类的效果。效果看起来不错,只是有时,如果您单击元素的顶部,或者由于某种原因在中心单击,div 会显得“移出”而不是调用 onclick 事件。

我认为一个好的解决方案是将元素包装在另一个 div 中,然后将 onclick 事件附加到该 div。但令我惊讶的是,点击仍然没有向按钮的顶部或中间触发。

top: 6px如果我在底部删除div:active,按钮工作正常,它只是没有相同的“推入”效果。

我发现它有点难以解释,所以这是一个屏幕截图(蓝色区域是 onclick 不会触发的地方):

不会触发 onclick 的按钮

这是最初尝试的代码:http: //jsfiddle.net/RS5Q5/6/

以及将 onclick 侦听器移到外面的代码:http: //jsfiddle.net/RS5Q5/4/(onclick 将在 div 中的任何地方触发,除了图片上的蓝色部分)

还值得注意的是,中间和底部的蓝色区域在 Firefox 中似乎可以点击,但不是 chrome 或 safari。顶部的蓝色区域仍然是一个问题。

对这种奇怪的行为有任何修复或解释吗?任何指导将不胜感激。谢谢你。

4

1 回答 1

2

可能是因为在单击事件期间内容移动时浏览器会感到困惑。这通常是因为用户按下鼠标按钮然后在释放之前拖动,但我想如果内容本身移动到点击位置下也是如此。

如果您使用 mousedown/mouseup 事件而不是 click 会发生什么?

于 2013-07-18T20:16:59.533 回答