5

我发现 jQueryclick事件的奇怪行为。如果我们使用键盘导航(可访问性案例),则单击由 Enter 或 Space 启动(这取决于我们使用的 HTML 元素)。

jsfiddle上有一个测试页面,您可以尝试在结果框架中使用键盘导航,并在不同情况下启动单击:

http://jsfiddle.net/DCXhN/9/

在 jQuery 手册中,我发现了以下点击事件的描述:

“当鼠标指针悬停在元素上时,点击事件被发送到元素,并且鼠标按钮被按下和释放。任何 HTML 元素都可以接收到这个事件。”

正常吗?如果是正常行为,如何仅拦截鼠标单击事件?

4

1 回答 1

9

是的,这很正常。JQuery 文档是正确的,但有点不完整。WC3 网站上有更多详细信息- 例如:

注意:为了获得最大的可访问性,鼓励内容作者在定义自定义控件的激活行为时使用 click 事件类型,而不是其他指针设备事件类型,例如 mousedown 或 mouseup,它们更特定于设备。尽管点击事件类型起源于指针设备(例如鼠标),但随后的实现增强已将其扩展到该关联之外,并且可以将其视为元素激活的与设备无关的事件类型。

或者,换一种说法,对于某些元素,click() 本质上是一个逻辑事件,而不是特定于设备的事件。

如果你真的只想响应鼠标输入,你可以使用 mousedown/up 事件 - 但请记住,你必须让你的 UI 键盘可以单独访问(例如,使用 keydown/press/etc 事件来提供键盘相等的)。

于 2012-04-30T08:11:40.290 回答