jQuery - show/hide div 间隔时间不同

jQuery - show/hide div in interval with different timings

我有这两个 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);

请参阅 DEMO 此处

可以吗?我尝试使用 .delay 但这不适用于 setInterval.

试试这个代码。

 
    $(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>

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();