页面加载时,如何让6个函数相互执行?

When the page is loaded,how to make six functions executed by each otherr?

加载页面时,在一个大的div中,有六个不同的元素和六个不同的函数,elements.I希望函数在确定后相互执行例如时间 1000ms.But 六个函数不绑定到一个元素,它们绑定到六个不同的元素。 例如,当页面加载时,我想将 addClass "line1" 添加到元素“#linear1”,1000 毫秒后,从元素“#linear1”中删除类“.line1”, 并立即, addClass "line2" 到元素“#linear2”,1000 毫秒后,从元素“#linear2”中移除类“.line2”, 并立即, addClass "line3" 到元素“#linear3”,1000 毫秒后,从元素“#linear3”中移除类“.line3” ... addClass "line6" 到元素“#linear6”,1000 毫秒后,从元素“#linear6”中删除类“.line6” 然后回到“#linear1”..."linear6"...loop

jquery(".cspaceintro 是中间列的父 div"):

$(document).ready(function(){
$(".cspaceintro").load(function(){
   $("#linear1").addClass("line1");

   //here,I don't know what to do next..

})
})

html:

<div class="middlecolumn">
                <div class="left1">
                    <div id="linear1"  ></div>
                </div>
                <div class="left2">
                    <div id="linear2" ></div>
                </div>
                <div class="left3">
                    <div id="linear3" ></div>
                </div>
                <div class="right1">
                    <div id="linear4" ></div>
                </div>
                <div class="right2">
                    <div id="linear5" ></div>
                    <!-- <div class="point"></div> -->
                </div>
                <div class="right3">
                    <div id="linear6" ></div>
                </div>

css的一部分

.line1{
float: right;

width: 0%;
height: 3px;
background-color: #2e9edd;
background: -webkit-gradient(linear, 0 0, 0 100%, from(#2e9edd), to(#2e9edd));

-webkit-animation:aaa 1s linear 1;
-webkit-animation-fill-mode:both;
}
.line2{
float: right;
position: relative;
top:30px;
width: 0%;
height: 3px;
background-color: #2e9edd;
background: -webkit-gradient(linear, 0 0, 0 100%, from(#2e9edd), to(#2e9edd));

-webkit-animation:aaa 1s linear 1;
-webkit-animation-fill-mode:both;

}
.line3{
float: right;
position: relative;
top:50px;
width: 0%;
height: 3px;
background-color: #2e9edd;
background: -webkit-gradient(linear, 0 0, 0 100%, from(#2e9edd), to(#2e9edd));

-webkit-animation:aaa 1s linear 1;
-webkit-animation-fill-mode:both;
}

@keyframes aaa{

0%  {width:0%; }
30% {width:30%; }
60% {width:60%; }
100%{width:95%; }
}

您可以使用 .queue() 将要为数组或 jQuery 对象中的每个元素调用的函数排队。在元素上设置 .className,使用 .one()animationend 事件附加到元素,在 animation 结束处理程序,当 css 元素的动画完成时调用,删除 .className, 调用队列中的下一个函数。

.promise().then().dequeue() 以在调用队列中的所有函数和jQuery returns promise 对象时调用函数。

.then() 函数中将 #linearN 元素的 width 设置为 "0%",再次调用原始函数,重复,在 .then() 链接到 .promise() 当队列为空函数时,以满足 "loop" 安排在异步函数调用后调用相同函数的要求。

问题描述了六个 #linearN 个元素

... addClass "line6" to element "#linear6", after 1000ms, removeClass ".line6" from element "#linear6" then back to "#linear1"..."linear6"...loop

尽管在 css 处有三个 .lineN 声明,而不是六个。只有前三个 #linearN 元素被传递给 stacksnippets 中的函数。当在 css 处定义了六个 .lineN 声明时,删除链接到 $("[id^=linear]", middlecolumn).

.slice(0, 3)

$(function() {

  var middlecolumn = $(".middlecolumn");
  var linearLines = $("[id^=linear]", middlecolumn).slice(0, 3);

  function animateLines(column, lines) {
    return column.queue("lines", $.map(lines, function(el, index) {
        return function(next) {
          $(el).addClass("line" + (index + 1))
            .one("animationend", function() {
              $(this).removeClass("line" + (index + 1));
              setTimeout(next, 1000);
            })
        }
      })).dequeue("lines").promise("lines")
      .then(function() {
        console.log("lines queue complete"
        , "\n`animateLines` call scheduled at next line");
        return animateLines(column, lines.css("width", "0%"));
      })
  }

  animateLines(middlecolumn, linearLines);

})
.line1 {
  float: right;
  width: 0%;
  height: 3px;
  background-color: #2e9edd;
  background: -webkit-linear-gradient(0 0, 0 100%, from(#2e9edd), to(#2e9edd));
  -webkit-animation: aaa 1s linear 1;
  -webkit-animation-fill-mode: both;
}

.line2 {
  float: right;
  position: relative;
  top: 30px;
  width: 0%;
  height: 3px;
  background-color: #2e9edd;
  background: -webkit-linear-gradient(0 0, 0 100%, from(#2e9edd), to(#2e9edd));
  -webkit-animation: aaa 1s linear 1;
  -webkit-animation-fill-mode: both;
}

.line3 {
  float: right;
  position: relative;
  top: 50px;
  width: 0%;
  height: 3px;
  background-color: #2e9edd;
  background: -webkit-linear-gradient(0 0, 0 100%, from(#2e9edd), to(#2e9edd));
  -webkit-animation: aaa 1s linear 1;
  -webkit-animation-fill-mode: both;
}

@keyframes aaa {
  0% {
    width: 0%;
  }
  30% {
    width: 30%;
  }
  60% {
    width: 60%;
  }
  100% {
    width: 95%;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<div class="middlecolumn">
  <div class="left1">
    <div id="linear1"></div>
  </div>
  <div class="left2">
    <div id="linear2"></div>
  </div>
  <div class="left3">
    <div id="linear3"></div>
  </div>
  <div class="right1">
    <div id="linear4"></div>
  </div>
  <div class="right2">
    <div id="linear5"></div>
    <!-- <div class="point"></div> -->
  </div>
  <div class="right3">
    <div id="linear6"></div>
  </div>
</div>