Solved

jQuery fadeIn(), fadeOut() on hover.

Posted on 2010-09-08
5
931 Views
Last Modified: 2012-05-10
I've got the following jQuery code below...
It is applied to several buttons along the top of my site so that when the mouse passes over them it will generate a nice fadeIn/fadeOut hover effect.  It works perfectly except that if I pass the mouse over the buttons very rapidly the fadeIn/fadeOut effects get backed up and when I stop shaking the mouse over the buttons I can sit back an watch all my buttons fade in and fade out several times before they finally come to a rest as they get all caught up to the events I triggered.

That looks stupid.  I would like for one fade effect to be canceled and another one to start immediately when the event is triggered.  So if the mouse passes into and out of the div very quickly then I would want the fadeIn to barely to have begun before it reverses from where it is back to the start.  Hope that makes sense.

I've tried using the stop() method, like this...

$('#btnTransact').click(function () {
  alert('Transactions');
}).hover(function () {
  $('#btnTransact').find('.MasterButtonHover').stop().fadeIn(200);
}, function () {
  $('#btnTransact').find('.MasterButtonHover').stop().fadeOut(200);
});

But this completely breaks it so nothing happens at all.

Any help on this would be greatly appreciated.

Thanks
<script type="text/javascript">

  $(function () {



    $('#btnTransact').click(function () {

      alert('Transactions');

    }).hover(function () {

      $('#btnTransact').find('.MasterButtonHover').fadeIn(200);

    }, function () {

      $('#btnTransact').find('.MasterButtonHover').fadeOut(200);

    });



    $('#btnPlanning').click(function () {

      alert('Planning');

    }).hover(function () {

      $('#btnPlanning').find('.MasterButtonHover').fadeIn(200);

    }, function () {

      $('#btnPlanning').find('.MasterButtonHover').fadeOut(200);

    });



    $('#btnConfig').click(function () {

      alert('Configuration');

    }).hover(function () {

      $('#btnConfig').find('.MasterButtonHover').fadeIn(200);

    }, function () {

      $('#btnConfig').find('.MasterButtonHover').fadeOut(200);

    });



    $('#btnCharts').click(function () {

      alert('Charts');

    }).hover(function () {

      $('#btnCharts').find('.MasterButtonHover').fadeIn(200);

    }, function () {

      $('#btnCharts').find('.MasterButtonHover').fadeOut(200);

    });



    $('#btnLogout').click(function () {

      alert('Logout');

    }).hover(function () {

      $('#btnLogout').find('.MasterButtonHover').fadeIn(200);

    }, function () {

      $('#btnLogout').find('.MasterButtonHover').fadeOut(200);

    });



  });

</script>

Open in new window

0
Comment
Question by:josephdaviskcrm
  • 2
  • 2
5 Comments
 
LVL 40

Accepted Solution

by:
gurvinder372 earned 500 total points
Comment Utility
have you checked this?
http://bavotasan.com/tutorials/creating-a-jquery-mouseover-fade-effect/
there is a demo at the bottom of page, it is also using stop function

and also this
http://aintyomamasblog.com/test/hover/
0
 
LVL 5

Expert Comment

by:drakeshe
Comment Utility
You can call
$(#myelement").stop();
THis will stop all animation.
0
 
LVL 5

Expert Comment

by:drakeshe
Comment Utility
Didnt notice that you already had tried stop. But I did then notice that you had not used stop correctly!
Try this new code:
$('#btnTransact').click(function () {
  alert('Transactions');
}).hover(function () {
  $('#btnTransact').find('.MasterButtonHover').stop(true, true).fadeIn(200);
}, function () {
  $('#btnTransact').find('.MasterButtonHover').stop(true, true).fadeOut(200);
});

Open in new window

0
 

Author Closing Comment

by:josephdaviskcrm
Comment Utility
This is exactly what I was looking for.  Using the stop(true, true) method forces the animation to jerk to the finish before it starts the next animation.  But this technique will reverse the animation from where ever it is currently when the next even is called.

Thanks for this.
0
 
LVL 40

Expert Comment

by:gurvinder372
Comment Utility
thanks for the points
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
Article by: DanRollins
This article describes a JavaScript program that creates a maze made of hexagonal cells.  In Part 2 (http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/A_7850-Hex-Maze-Part-2.html), we'll extend the program by adding a depth-…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now