Reputation: 479
I have a simple fadeIn function, that fades in Tooltip 1, then 2, then 3 etc... Is there a more dynamic and a better programmatically way to do this? At the moment this is how I have it working:- HTML
<div class="tooltips tooltip1" tooltip="<h2>Introduction <div>Area</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button red-btn'><a href='#'>Watch Video</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">
Introduction
</div>
</div>
</div>
<div class="tooltips tooltip2" tooltip="<h2>Auditorium <div>Area-in</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button purple-btn'><a href='#'>View Auditorium Area</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">
Auditorium
</div>
</div>
</div>
<div class="tooltips tooltip3" tooltip="<h2>Main Hall Area <div>Video</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button'><a href='#'>View Main Hall Area</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">
Main Hall
</div>
</div>
</div>
<div class="tooltips tooltip4" tooltip="<h2>Experience <div>Area</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button black-btn'><a href='#'>View Experience Area</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">
Partner Hall
</div>
</div>
</div>
<div class="tooltips tooltip5" tooltip="<h2>Sign <div>In</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button purple-btn'><a href='#'>Sign In</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">
Sign In
</div>
</div>
</div>
JQuery
$('.tooltip1').delay(1500).fadeIn(function(){
$('.tooltip2').delay(100).fadeIn(function(){
$('.tooltip3').delay(100).fadeIn(function(){
$('.tooltip4').delay(100).fadeIn(function(){
$('.tooltip5').delay(100).fadeIn(function(){
$('.tooltip6').delay(100).fadeIn(function(){
$('.tooltip7').delay(100).fadeIn(function(){});
});
});
});
});
});
});
Thanks for your help!
Upvotes: 1
Views: 28
Reputation: 337646
To achieve this more efficiently, in terms of the JS code structure, you can use a common class on all the tooltip elements. You can then loop through this class and add a delay()
to each element, incremented by an extra 100ms
on each iteration, before calling fadeIn()
on them. Try this:
$(".tooltip").each(function(i) {
$(this).delay(1500 + (100 * i)).fadeIn();
});
.tooltip {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="tooltip" tooltip="<h2>Introduction <div>Area</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button red-btn'><a href='#'>Watch Video</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">Introduction</div>
</div>
</div>
<div class="tooltip" tooltip="<h2>Auditorium <div>Area-in</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button purple-btn'><a href='#'>View Auditorium Area</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">Auditorium</div>
</div>
</div>
<div class="tooltip" tooltip="<h2>Main Hall Area <div>Video</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button'><a href='#'>View Main Hall Area</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">Main Hall</div>
</div>
</div>
<div class="tooltip" tooltip="<h2>Experience <div>Area</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button black-btn'><a href='#'>View Experience Area</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">Partner Hall</div>
</div>
</div>
<div class="tooltip" tooltip="<h2>Sign <div>In</div></h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><div class='main-button purple-btn'><a href='#'>Sign In</a></div>" tooltip-position="top">
<div class="tooltip-pad">
<div class="tooltip-info">Sign In</div>
</div>
</div>
As a side note, be careful of placing HTML in attributes. It can cause issues in some browsers. I'd suggest HTML-encoding it. In addition tooltip
isn't a standard HTML attribute. If you want to store custom data in an Element, use data
attributes, eg. data-tooltip="..."
.
Upvotes: 2