2010-02-18 47 views
56

请considere这个CSS代码:如何用jQuery强制悬停状态?

a { color: #ffcc00; } 
a:hover { color: #ccff00; } 

此HTML代码:

<a href="#" id="link">Link</a> 
<button id="btn">Click here</button> 

最后,这个JS代码:

$("#btn").click(function() { 
    $("#link").trigger("hover"); 
}); 

我想提出我的链接用途它的伪类:点击按钮时悬停。 我试图触发像mousemove,mouseenter,悬停等事件,但任何人都可以工作。 请注意,我要强制使用我的CSS伪类的:悬停规范,而不是使用这样的:

$("#link").css("color", "ccff00"); 

有些人知道我该怎么做呢?万分感谢。

回答

103

你将不得不使用一个类,但不用担心,它非常简单。首先,我们将分配您的:hover规则,不仅适用于物理悬停的链接,还适用于类名为hovered的链接。

a:hover, a.hovered { color: #ccff00; } 

接下来,当你点击#btn,我们将切换上#link.hovered类。

$("#btn").click(function() { 
    $("#link").toggleClass("hovered"); 
}); 

如果链接已经有类,它将被删除。如果它没有课程,它将被添加。

+0

#jonathan它的工作正常。有没有其他方式可以在不添加a.hovered的情况下实现它。 – 2015-03-25 06:59:24

+0

@ArulSidthan结账Mike的答案。触发“鼠标悬停”而不是“悬停”可以做到你正在寻找的东西。 – andyzinsser 2015-04-16 16:08:44

+0

谢谢@andyzinsser其工作正常:) – 2015-04-17 04:38:22

24

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

$("#btn").click(function() { 
    $("#link").trigger("mouseover"); 
}); 

不知道这是否适用于您的特定场景,但我已成功触发mouseover而不是悬停在各种情况下。

+5

fwiw,我发现如果存在以下情况的样式规则,则不会加载图像:指定背景图像的hover。 – 2012-06-13 20:22:23

+10

mouseover与CSS不同:悬停。所以这是行不通的。它只能在mouseover事件被绑定的情况下工作。 – 2013-06-23 12:20:33

+0

有趣的是,我一直尝试不同的方式来添加类,但这确实解决了我的问题......在有些情况下它的有用答案。 – joshua 2014-06-23 04:32:50