0

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

event.preventDefault()在处理函数中使用 jQuery 调用来执行此操作并返回 false。

这具有预期的效果,除了在 Chrome 中它还阻止 CSS:hover状态在鼠标仍被按下时工作。

Firefox 不会遇到同样的问题。文本突出显示被取消,并且 :hover 状态继续工作,因为用户在鼠标仍然按下的情况下滚动项目。

有没有一种方法也可以在 Chrome 中使用?

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

4

3 回答 3

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 上删除类。

于 2012-07-05T22:04:41.727 回答
0

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

于 2012-07-05T18:24:52.627 回答
0

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

编辑:我认为这个“如何使用 CSS 禁用文本选择突出显示? ”更好,因为涵盖了更多浏览器,从而使其更具跨浏览器。

于 2012-07-05T18:17:01.413 回答