tags:

views:

372

answers:

4

I have defined an <a> tag with css. I'm trying to stop default stylesheet :hover changes on the a tag. How do I disable the hover changes on the a tag in Jquery?

+3  A: 

Live demo of the following solution: http://jsbin.com/umiru

--

The easiest way I can think of is to change:

a:hover { ... }

into

a.someClass:hover { ... }

And then add/remove .someClass via jQuery's methods:

$(this).addClass("someClass");    // activates css rules for :hover
$(this).removeClass("someClass"); // deactivates css rules for :hover
Jonathan Sampson
tried that not work
zsharp
Do you mean your stylesheet has `a:hover { color:red }` or something similar?
Jonathan Sampson
yes thats it hhh
zsharp
zsharp - see my updates please.
Jonathan Sampson
zsharp - the solution I provided works. Please see the link included at the top of my solution for a demonstration.
Jonathan Sampson
+1  A: 

The easiest way would be to create a new CSS rule for the specific a tag. Something like

a.linkclass:hover {color:samecolor}

If you have to use JQuery to override the default styles, you have to manually add the css rules in the hover state, something like this:

$('a.linkclass').hover(function(){
    $(this).css({'color':'samecolor'});
});

hope this help

honeybuzzer
A: 

Just define your CSS without a "a:hover"

a { color: #fffff }

This CSS will override the a:link, a:hover, a:visited and a:active.

fudgey
A: 

Here is a solution without hack classes:

CSS:

a {color: blue;}
a:hover {color: red;}

jQuery (uses jQueryUI to animate color):

$('a').hover( 
  function() {
    $(this)
      .css('color','blue')
      .animate({'color': 'red'}, 400);
  },
  function() {
    $(this)
      .animate({'color': 'blue'}, 400);
  }
);

demo

kingjeffrey