上一次完成时jQuery启动功能

时间:2013-09-25 21:36:42

标签: javascript jquery

我有5个文本节点,如

<h2 class="textillate"> test </h2>
<h2 class="textillate"> test </h2>
<h2 class="textillate"> test </h2>
<h2 class="textillate"> test </h2>
<h2 class="textillate"> test </h2>

我希望在完成上一个节点时逐个传输这些节点。

我试过这个,但没有成功:(

$(document).ready(function() {
nodes = $('.textillate');
nodes.eq(0).textillate()
.eq(1).textillate();
});

3 个答案:

答案 0 :(得分:3)

您可以使用功能参数,即initialDelay。例如,这就是诀窍:

nodes = $('.textilate');
nodes.each(function(index, element){
      $(element).textillate({initialDelay: index*1000});
}

演示:http://jsfiddle.net/LUq39/

查看更多usage options以更精细地调整各种持续时间。

<强>更新

这是一个更新的演示,取决于字符串的长度:http://jsfiddle.net/LUq39/13/它实际上累积了延迟时间:

var nodes = $('.textilate');
var delay = 0
nodes.each(function(){
      delay += $(this).prev()? $(this).prev().text().length*50:0;
      $(this).textillate(
          {initialDelay: delay, in:{delay:50}, out:{delay:50}}
      );
})

答案 1 :(得分:0)

jQuery each怎么样?

$(document).ready(function() {
    $('.textillate').each(function(index, element) {
        $(element).textillate();
    });
});

如果您希望函数一个接一个地执行,为什么不只是for循环:

var items = $('.textillate')
for(var i = 0; i < items.size(); i++) {
    $(items[i]).textillate();
}

答案 2 :(得分:0)

据我所知,您希望等待一个textilate结束以拨打下一个。 我刚读过Textillate API,它没有回调/保证选项。

由于textillate不提供回调机制,因此无法准确知道动画何时结束。除非您知道每个动画的持续时间,否则您可以等待一个动画结束以调用下一个动画。

如果您想同时将Textillate应用于每个元素,只需使用:

$('.textillate').textillate();