Brad
Brad

Reputation: 479

FadeIn same div but different number

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

Answers (1)

Rory McCrossan
Rory McCrossan

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

Related Questions