jquery 如果悬停并按下shift键,是否切换背景?

jbose2ul  于 2022-11-03  发布在  jQuery
关注(0)|答案(5)|浏览(138)

我用这段代码在鼠标悬停在某个元素上并按下shift键时切换背景。如果我在输入该元素之前按住shift键,它就可以工作,但如果我已经在该元素上并按下shift键,它就不能工作。有什么想法吗?谢谢!
第一个

hi3rlvi2

hi3rlvi21#

div不能成为焦点(默认情况下);因此,* 它不能捕获按键
但是,如果将keypress事件侦听器绑定到文档,则每次按下按键时都会触发该事件。请将mouseovermouseleave绑定到div,因为它们可以通过非焦点元素触发。
此外,
keyboard event不同于mouse event *,因此不能在鼠标悬停时访问eshiftKey。相反,我将使用&&操作符来测试是否同时满足这两个条件:shift键和鼠标,将shift键是否被按下保存在布尔值中,并在mouseover / mouseleave时进行检查。
第一个

fhg3lkii

fhg3lkii2#

你可以添加一堆代码来监听鼠标的位置,也可以为keydown添加一个事件,并计算出光标在哪里...
也许有更好的解决办法,但这是可行的。
第一个
另一种方法是设置一个活动元素,而不用担心x和y位置。
第一个

v6ylcynt

v6ylcynt3#

这是一个有点草率,但它应该工作。只要设置一些var,然后检查他们每当一个事件被激发。
注意:你必须在iframe中点击一次才能使它工作(这样它就可以捕获按键)。
第一个

llmtgqce

llmtgqce4#

现在说这个有点晚了,但是这里有一个非jquery的例子,它监视击键并实时地将各种shift/ctrl/alt状态添加到html classList中。
CSS可以相应地响应。

备注

要在stackoverflow代码段中测试此代码,需要焦点,因为代码段在iframe中运行。
当作为顶级页面运行时,默认情况下当前文档将成为焦点。
首先点击“运行代码片段”,然后选择直接在它下面的iframe-点击单词“shift”,你将聚焦在iframe中
然后您可以点击shift键。
第一个

eulz3vhy

eulz3vhy5#

keypress doesn't capture the shift-key
此[按键事件]类似于keydown事件,不同之处在于,修饰键和非打印键(如Shift、Esc和Delete)触发keydown事件,而不是按键事件。

相关问题