jQuery鼠标的.click()由键盘导航启动

Fed*_*TIK 5 jquery events accessibility click

我发现了jQuery click事件的奇怪行为.如果我们使用键盘导航(辅助功能案例),则单击由Enter或Space启动(取决于我们使用的HTML元素).

在jsfiddle上有一个测试页面,您可以尝试在Result框架中使用键盘导航,然后在不同情况下启动click:

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

在jQuery手册中,我找到了以下click事件的描述:

"当鼠标指针悬停在元素上时,click事件将被发送到一个元素,并且按下并释放鼠标按钮.任何HTML元素都可以接收此事件."

这是正常的吗?如果正常行为,如何拦截鼠标点击事件?

Bre*_*McK 8

是的,这很正常.JQuery文档是正确的,但有点不完整.有关WC3网站的更多详情- 例如:

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

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

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