按下鼠标时如何在Chrome中保持悬停状态?

时间:2012-07-05 18:12:12

标签: javascript jquery google-chrome dom event-handling

当我的用户按下自定义下拉列表时,我正在停止mousedown事件。这是为了避免在用户有效拖动鼠标时浏览器的默认文本突出显示行为。

我在处理程序函数中使用jQuery event.preventDefault()调用并返回false。

这具有所需的效果,但在Chrome中它还可以防止CSS :hover状态在鼠标仍然按下时工作。

Firefox没有遇到同样的问题。文本突出显示被取消,并且:悬停状态继续有效,因为用户仍然按下鼠标滚动项目。

是否有一种方法可以在Chrome中使用?

我可以添加更多mouseover处理程序来添加自定义类,但我更喜欢更优雅的解决方案,所以我可以在CSS中使用:hover伪类。

3 个答案:

答案 0 :(得分:0)

为了防止突出显示文本,有一个CSS3属性。 我在SO问题中找到了这个信息。“Prevent Highlight of Text Table

编辑:我认为这个“How to disable text selection highlighting using CSS?”更好,因为有更多浏览器覆盖,从而使其更具跨浏览性。

答案 1 :(得分:0)

您可以将CSS定义为     :hover,.hover {...} 然后只需在鼠标悬停时切换班级

答案 2 :(得分:0)

在文档mousedown上,只需将此类添加到正文:

.stopSelect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}

这将阻止文本选择。 在mouseup上删除该类。