【问题标题】:Clear a stuck :hover psuedoclass清除卡住的 :hover 伪类
【发布时间】:2014-07-02 20:03:56
【问题描述】:

由于 webkit 错误(我认为),有一种情况是我卡住了:hover psuedoclass。你可以在这里看到这个:http://jsfiddle.net/zFk2V/3/

拖放后,前一个元素在 Chrome 中保持:hover 状态。 如果您将鼠标悬停在卡住的项目上,悬停状态就会清除。

我认为应该可以使用事件触发、DOM 回流触发或其他一些诡计来清除元素的悬停状态。

我试过了:

$('[draggable]').trigger('mouseenter')
$('[draggable]').trigger('mousemove')
$('[draggable]').trigger('mouseout')
$('[draggable]').trigger('mouseleave')
$('[draggable]').trigger('blur')
$('[draggable]').trigger('hover')

$('[draggable]').toggleClass('selected')
$('[draggable]').toggleClass('selected') // twice to reset to original

$('[draggable]').height(true) // should trigger a DOM reflow

...以及所有这些的不同组合,但没有成功

我什至试过这个,即使不可接受,我也确信它会起作用:

$('[draggable]').hide()
setTimeout(function(){
  $('[draggable]').show()
}, 10)

这也不起作用。 :(

在所有情况下,:hover 状态都会持续存在。您可以通过 chrome 检查器和视觉效果来验证这一点。

我很想知道是否有为此提交的错误,或者是否有其他人听说过。我发现的只是this other question 在谈论它,而答案是大锤。

【问题讨论】:

标签: jquery css html webkit


【解决方案1】:

解决此错误的一种方法是使用 JS mouseentermouseleave 事件来应用悬停状态,而不是 CSS :hover 伪类:

CSS

.hover {
    background: #fc9;
}

JS

lis[i].addEventListener("mouseenter", function(event) {
    this.classList.add("hover");
}, false);
lis[i].addEventListener("mouseleave", function(event) {
    this.classList.remove("hover");
}, false);

并确保在拖动开始时移除悬停效果:

lis[i].addEventListener("dragstart", function(event) {
    dragged = this;
    this.classList.remove("hover"); // <- Add this
    ol.classList.add("insistent");
}, false);

这是一个小提琴:

http://jsfiddle.net/36kBp/2/

【讨论】:

  • 当然可以,但我对此有顾虑——与此处相同的答案和相同的顾虑:stackoverflow.com/a/17953595/111243。你能确认这个卡住的悬停真的是一个错误吗?您过去见过/遇到过问题吗?
  • 我不确定这是错误还是预期行为。它确实感觉像一个错误。上周我在为悬停的元素设置动画时遇到了它。与您的情况一样,当元素从光标下方移出时,Chrome 并未删除:悬停。在我的情况下,我可以通过将点击事件更改为 mousedown 事件来解决它,并保留 :hover 伪类。在您的情况下,我认为该解决方案不适用。我的 2 美分:我不会挂断使用 JS 作为解决方法。我想最好有从未删除的悬停事件?
  • 仅供参考,这是解决我的:悬停问题的 Stack Overflow 问题:stackoverflow.com/questions/10321275/…
猜你喜欢
  • 2015-07-08
  • 2012-10-06
  • 2011-03-08
  • 2014-10-22
  • 2017-08-08
  • 2019-03-02
  • 1970-01-01
  • 2022-06-28
  • 2017-11-29
相关资源
最近更新 更多