Keith Power
Keith Power

Reputation: 14141

jQuery override css hide on mouse out

I have a hidden div that I show when the mouse hovers.

Then when I click the text changes and I want the div to be permanently shown. The problem is that it disappears again when the mouse moves off.

Is there a way in jQuery to override the mouse out hide in the css?

Thanks

CSS

.saveCompare {
    display:none;
    margin-left: 10px;
    background-color:#BDD455;
    color:#ffffff;
    padding: 2px 8px;
    border-radius: 3px;
    -moz-border-radius: 3px;
    -webkit-border-radius: 3px; 
}

.listingContainer:hover .saveCompare {
  display: inline;
}

jQuery

        $("div.saveCompare").click(function() {
            $(this).text('Compare Added');
            $(this).show();
            return false;
        });

Upvotes: 0

Views: 365

Answers (3)

m90
m90

Reputation: 11812

As far as I know it is not possible to manipulate pseudo-classes in JavaScript (correct me if I'm wrong). You could go for a all-jQuery solution with sth like this:

$('.saveCompare').hide(); //you could do this in the CSS as well    
$('.listingContainer').hover(function(){
   $(this).children('.saveCompare').show(); //on mouse over show child .saveCompare
},function(){
   $(this).children('.saveCompare').hide(); //on mouse out hide child .saveCompare
});
$('.saveCompare').click(function(){
  $(this).append('<p>Added</p>').parent('.listingContainer').unbind(); //remove parent element's hover handler when clicked and show .saveCompare forever
});

Upvotes: 1

Ayush
Ayush

Reputation: 42440

Before you hide the form on mouseout do a check

$('#yourElement').hover(function(){
   //show your form
},function(){
   if (!textHasChanged)
      //hide your form
});

Upvotes: 1

Thomas
Thomas

Reputation: 98

Thats probably because of your "display:none" in the ".saveCompare". The div still has this class. So its going to hide the div. Maybe you can write a new class:

.saveCompareNew {
    display:inline;
    margin-left: 10px;
    background-color:#BDD455;
    color:#ffffff;
    padding: 2px 8px;
    border-radius: 3px;
    -moz-border-radius: 3px;
    -webkit-border-radius: 3px; 
}

And then use this call to remove your old class and add your new class

.removeClass("saveCompare").addClass("saveCompareNew")

Thats probably no the best solution, but it should work.

Upvotes: 2

Related Questions