2010-02-18 11 views
56

Por favor, considerará si el código CSS:Cómo forzar un estado de vuelo estacionario con jQuery?

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

Este código HTML:

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

Y, por último, este JS código:

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

me gustaría hacer mis usos de enlace su pseudo-clase: desplace el cursor cuando se hace clic en el botón. Intenté desencadenar eventos como mousemove, mouseenter, hover, etc., pero cualquiera trabaja. en cuenta que quiero forzar el uso del CSS mi pseudo-clase: hover especificación y no usar algo como:

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

Alguien sabe cómo puedo hacer esto? Muchas gracias.

Respuesta

103

Tendrás que usar una clase, pero no te preocupes, es bastante simple. Primero, asignaremos sus reglas :hover para que no solo se apliquen a enlaces físicamente suspendidos, sino también a enlaces que tengan el nombre de clase hovered.

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

A continuación, al hacer clic en #btn, vamos a alternar la clase .hovered en el #link.

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

Si el enlace ya tiene la clase, se eliminará. Si no tiene la clase, se agregará.

+0

#jonathan funciona bien. ¿Hay alguna otra forma de implementar el mismo sin agregar un.hovered. –

+0

@ArulSidthan revisa la respuesta de Mike. Disparar 'mouseover' en lugar de 'hover' hace lo que estás buscando. – andyzinsser

+0

Gracias @andyzinsser está funcionando bien :) –

24

Además, podría intentar activar un mouseover.

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

No estoy seguro si esto funcionará para su situación específica, pero he tenido éxito activación encima del ratón en lugar de flotar durante varios casos.

+5

fwiw, he encontrado que esto no cargará imágenes si hay una regla de estilo para: hover que especifica una imagen de fondo. –

+10

mouseover es diferente de CSS: hover. Entonces esto no funcionará Solo puede funcionar en una situación en la que un evento mouseover se haya vinculado a algo. –

+0

Curiosamente seguí intentando diferentes formas de agregar clases, pero esto resolvió mi problema ... es una respuesta útil bajo ciertas circunstancias. – joshua

Cuestiones relacionadas