Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jquery function on toggleClass complete?

Tags:

jquery

How can I do a function once a toggleClass has completed? I've tried the following but with no luck:

$("#loader").toggleClass('fadeOut', function () {
    alert('a');
});
like image 462
panthro Avatar asked Apr 25 '12 18:04

panthro


People also ask

How can I replace one class with another in jQuery?

To replace a class with another class, you can remove the old class using jQuery's . removeClass() method and then add the new class using jQuery's . addClass() method.

How do you toggle with multiple classes?

Answer. Yes, you can toggle multiple classes using a single . toggleClass() call. To do so, you can separate the class names with spaces.

How do I toggle Show hide in jQuery?

The toggle() method toggles between hide() and show() for the selected elements. This method checks the selected elements for visibility. show() is run if an element is hidden. hide() is run if an element is visible - This creates a toggle effect.

How do I toggle icons in jQuery?

click(function(){ $('#display_advance'). toggle('1000'); $(this).


2 Answers

jQuery has a promise method that returns a promise that resolves after all running animations on selected elements are complete. At that point, you can bind to it's done method.

$("#loader").toggleClass('fadeOut',600).promise().done(function(){     console.log('a'); }); 

http://jsfiddle.net/skram/4x76J/

Note: Animations using toggleClass require jQuery UI.

like image 78
Kevin B Avatar answered Oct 02 '22 09:10

Kevin B


toggleClass is executed immediately and so you don't need a callback for toggleClass, just place the alert('a') in the next line which will alert after toggleClass is executed.

Edit: Looks like you want jQuery UI Effects - toggleClass which unfortunately doesn't have a callback function.

Probably you should write your own toggle function. See below for fadeIn/fadeOut toggle,

var $loader = $("#loader");
if ($loader.is(':visible')) {
  $loader.fadeOut(100, function () {
      alert('fade out complete');
  });
} else {
  $loader.fadeIn(100, function () {
      alert('fadeIn complete');
  });
}
like image 30
Selvakumar Arumugam Avatar answered Oct 02 '22 09:10

Selvakumar Arumugam