2010-02-18 3 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, hover и т. Д., Но каждый работает. Обратите внимание, что я хочу, чтобы заставить использовать мой CSS псевдо-класса: парить спецификации и не использовать что-то вроде:

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

Некоторые знает, как я могу это сделать? Большое спасибо.

ответ

103

Вам нужно будет использовать класс, но не беспокойтесь, это довольно просто. Сначала мы назначим ваши правила :hover не только применительно к физически зависающим ссылкам, но и к ссылкам, которые имеют имя класса hovered.

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

Далее, при нажатии кнопки #btn, мы переключить .hovered класс на #link.

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

Если ссылка уже имеет класс, она будет удалена. Если у него нет класса, он будет добавлен.

+0

#jonathan его рабочий штраф. есть ли другой способ реализовать то же самое без добавления a.hovered. –

+0

@ArulSidthan проверка ответа от Майка. Запуск «mouseover» вместо «hover» делает то, что вы ищете. – andyzinsser

+0

Спасибо @andyzinsser, что он работает отлично :) –

24

Кроме того, вы можете попробовать запустить курсор мыши.

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

Не уверен, если это будет работать для конкретного сценария, но я имел успех запуска MouseOver вместо парение для различных случаев.

+5

fwiw, я обнаружил, что это не будет загружать изображения, если существует правило стиля для: hover, который задает фоновое изображение. –

+10

mouseover отличается от CSS: hover. Так что это не сработает. Он может работать только в ситуации, когда событие mouseover связано с чем-то. –

+0

Забавно, что я продолжал пробовать разные способы добавления классов, но это решило мою проблему ... ее полезный ответ при обстоятельствах. – joshua

Смежные вопросы