如何使用jQuery强制悬停状态?

MCa*_*ale 65 css jquery

请考虑这个CSS代码:

a { color: #ffcc00; }
a:hover { color: #ccff00; }
Run Code Online (Sandbox Code Playgroud)

这个HTML代码:

<a href="#" id="link">Link</a>
<button id="btn">Click here</button>
Run Code Online (Sandbox Code Playgroud)

最后,这个JS代码:

$("#btn").click(function() {
   $("#link").trigger("hover");
});
Run Code Online (Sandbox Code Playgroud)

我想让我的链接使用其伪类:单击按钮时悬停.我试图触发像mousemove,mouseenter,hover等事件,但任何人都可以.请注意,我想强制使用我的CSS伪类:悬停规范,而不是使用类似的东西:

$("#link").css("color", "ccff00");
Run Code Online (Sandbox Code Playgroud)

有人知道我该怎么做?非常感谢.

Sam*_*son 113

你将不得不使用一个类,但不要担心,这很简单.首先,我们将您的:hover规则分配给不仅适用于物理上悬停的链接,还适用于具有类名的链接hovered.

a:hover, a.hovered { color: #ccff00; }
Run Code Online (Sandbox Code Playgroud)

接下来,当您单击时#btn,我们将切换.hovered该类#link.

$("#btn").click(function() {
   $("#link").toggleClass("hovered");
});
Run Code Online (Sandbox Code Playgroud)

如果链接已经有类,它将被删除.如果没有该类,则会添加该类.


小智 31

此外,您可以尝试触发鼠标悬停.

$("#btn").click(function() {
   $("#link").trigger("mouseover");
});
Run Code Online (Sandbox Code Playgroud)

不确定这是否适用于您的特定情况,但我已成功触发鼠标悬停而不是悬停在各种情况下.

  • mouseover与CSS不同:hover.所以这不会奏效.它只能在鼠标悬停事件绑定到某些事物的情况下工作. (12认同)
  • fwiw,我发现如果有一个样式规则,这将不会加载图像:hover指定背景图像. (5认同)