检查鼠标悬停时是否按下鼠标按钮?

22

我有一个网站上的盒子网格,用户可以与之交互。如果他们点击一个盒子,它会改变颜色。有相当多的盒子,所以让它变得不那么繁琐将是很好的功能:如果鼠标按下并悬停在盒子上,则它会改变状态。有什么想法吗?


这里有一些好的答案:https://dev59.com/FEzSa4cB1Zd3GeqPlEIS - MattDiamant
3个回答

36
您可以在传递给悬停回调的事件上使用buttons属性来检查触发事件时按下了哪个鼠标按钮。
例如,要检测当鼠标进入元素时是否按下了左键,可以使用以下代码:
myElement.addEventListener("mouseover", function(e){
    if(e.buttons == 1 || e.buttons == 3){
        //do some stuff
    }
})

这里是这个想法的演示: http://jsfiddle.net/Ah6pw/ 按住鼠标左键并将鼠标移动到不同的列表项中。

1
@Jonathan 是的,但是通过使用.which而不是.buttons在其他浏览器中也可以正常工作。 - Oak
@Jonathan 我没有进行过广泛的测试,但这在我的Firefox中似乎也可以工作。 - Asad Saeeduddin
请参考 https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent/buttons#Browser_compatibility 了解兼容性。 - Adam Zerner
适用于大多数现代浏览器。 - Damjan Pavlica

0

-4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接