JSFiddle - React, Tailwind, and code Playground

HTML

<button type="button" data-tar="#Tab1">Show Tab 1</button>
<button type="button" data-tar="#Tab2">Show Tab 2</button>
<button type="button" data-tar="#Tab3">Show Tab 3</button>
<button type="button" data-tar="#Tab4">Show Tab 4</button>
<button type="button" data-tar="#Tab5">Show Tab 5</button>
<div id="TabSection">
    <div id="Tab1">
         <h1>Tab 1</h1>

        <div>Ajax Response</div>
    </div>
    <div id="Tab2">
         <h1>Tab 2</h1>

        <div>Ajax Response</div>
    </div>
    <div id="Tab3">
         <h1>Tab 3</h1>

        <div>Ajax Response</div>
    </div>
    <div id="Tab4">
         <h1>Tab 4</h1>

        <div>Ajax Response</div>
    </div>
    <div id="Tab5">
         <h1>Tab 5</h1>

        <div>Ajax Response</div>
    </div>
</div>

CSS

@charset"UTF-8";
 #TabSection>div {
    border:1px solid #e0e0e0;
    width:100px;
}
/*!
Animate.css - http://daneden.me/animate
Licensed under the MIT license - http://opensource.org/licenses/MIT

Copyright (c) 2015 Daniel Eden
*/
 .animated {
    -webkit-animation-duration: 1s;
    animation-duration: 1s;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both;
}
.animated.infinite {
    -webkit-animation-iteration-count: infinite;
    animation-iteration-count: infinite;
}
.animated.hinge {
    -webkit-animation-duration: 2s;
    animation-duration: 2s;
}
.animated.bounceIn, .animated.bounceOut {
    -webkit-animation-duration: .75s;
    animation-duration: .75s;
}
.animated.flipOutX, .animated.flipOutY {
    -webkit-animation-duration: .75s;
    animation-duration: .75s;
}
@-webkit-keyframes bounce {
    from, 20%, 53%, 80%, to {
        -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
        animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
        -webkit-transform: translate3d(0, 0, 0);
        transform: translate3d(0, 0, 0);
    }
    40%, 43% {
        -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
        animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
        -webkit-transform: translate3d(0, -30px, 0);
        transform: translate3d(0, -30px, 0);
    }
    70% {
        -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
        animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
        -webkit-transform: translate3d(0, -15px, 0);
        transform: translate3d(0, -15px, 0);
    }
    90% {
        -webkit-transform: translate3d(0, -4px, 0);
        transform: translate3d(0, -4px, 0);
    }
}
@keyframes bounce {
    from, 20%, 53%, 80%, to {
        -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
        animation-timing-function: cubic-bezier(0.215, 0.610, 0.355,...

JavaScript

// **************************
	// *** Various outer vars ***
	// **************************
	var $sections = $('#TabSection>div').hide();
	var ajaxPromise;
	var str = {
		//various strings
		'animationend': 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',
		'fadeOutClasses': 'fadeOutDown animated',
		'fadeInClasses': 'fadeInDown animated',
		'allClasses': 'fadeOutDown fadeInDown animated'
	};

	// ***********************************************
	// *** Utilities in the form of jQuery plugins ***
	// ***********************************************
	jQuery.fn.killAnim = function(animation) {
		/* jQuery plugin :
		 * Remove all the animation classes from all possible targets, and
		 * detach any currently attached animationend handlers.
		 * Depends on: str (object).
		 */
		return this.off(str.animationend).removeClass(str.allClasses);
	};
	jQuery.fn.cssAnimate = function (animation) {
		/* jQuery plugin :
		 * Perform CSS animation and return promise.
		 * Depends on: str (object); killAnim (plugin).
		 */
		var that = this;
		return $.Deferred(function(dfd) {
			// if no target or target not visible, resolve;
			if(that.length == 0 || !that.is(':visible')) {
				dfd.resolve();
			}
			that.addClass(animation).one(str.animationend, dfd.resolve);
		}).then(function() {
			that.killAnim();
		});
	};
	jQuery.fn.genericSwipeVertFunc = function () {
		/* jQuery plugin :
		 * Sequence two CSS animations - fadeOut then fadeIn.
		 * Depends on: str (object); killAnim (plugin); cssAnimate (plugin).
		 */
		var that = this; // swipeInTarget
		var swipeOutTarget = $sections.filter(':visible()').eq(0);
		function stage1() {
			$sections.killAnim().not(swipeOutTarget).hide();
			return swipeOutTarget.cssAnimate(str.fadeOutClasses).then(function() {
				swipeOutTarget.hide();
			});
		};
		function stage2() {
			$sections.not(that).killAnim().hide();
			return that.show().cssAnimate(str.fadeInClasses);
		};
		return...