jQuery - показать / скрыть div в интервале с разными таймингами

У меня есть эти два div и я хочу показать и скрыть div .one а также .two поочередно.

Я хочу показать div .one в течение 10 секунд скрыть и показать div .two в течение 5 секунд в интервале.

Я могу использовать только классы, потому что у меня есть несколько .one а также .two классы, которые все должны быть изменены с помощью jQuery-кода.

HTML:

<div class="one">show div 10 seconds</div>
<div class="two">show div 5 seconds</div>

JQuery:

setInterval("$('.one, .two').toggle();",2000);

Смотрите ДЕМО здесь

Возможно ли это сделать? я пытался использовать .delay но это не работает с setInterval,

3 ответа

Решение
InitialFlip();

function InitialFlip() {
    setTimeout(SecondFlip, 10000);
}

function SecondFlip() {
    $(".one, .two").toggle();

    setTimeout(function() {
        $(".one, .two").toggle();
        InitialFlip();
    }, 5000);
}

Попробуй это:

var elems = ['.one', '.two'], delays = [1000, 500];
var curr = 0, prev = 0;
function showDiv() {
    $(elems[prev]).hide();
    $(elems[curr]).show().clearQueue().delay(delays[curr]).queue(function() {
        showDiv();
    });
    prev = curr;
    curr += 1;
    curr = curr % elems.length;
}
showDiv();

Попробуйте этот код.

 
    $(document).ready(function(){
        //initially hide second h1
        $(".two").hide();
    
        function show_second(){
            $(".one").hide();
            $(".two").show();
            setTimeout(show_first,10000);
        }
    
    
        function show_first(){
            $(".one").show();
            $(".two").hide();
            setTimeout(show_second,5000);
        }
    
        setTimeout(show_second,10000);
    });
   
.one {
    background:green;
}
.two {
    display: none;
    background:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


    <div class="one">show div 10 seconds</div>
    <div class="two">show div 5 seconds</div>

Другие вопросы по тегам