2010-02-18 142 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