2

我有 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();
});
4

3 回答 3

3

您可以使用函数参数,即initialDelay. 例如,这可以解决问题:

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

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

查看更多使用选项以更精细地调整各种持续时间。

更新

这是一个取决于字符串长度的更新演示: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}}
      );
})
于 2013-09-25T22:13:07.500 回答
0

每个jQuery 怎么样?

$(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();
}
于 2013-09-25T21:41:03.680 回答
0

正如我所理解的,您想等待一个文本结束来调用下一个。我刚刚阅读了 Textillate API,它没有回调/承诺选项。

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

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

$('.textillate').textillate();
于 2013-09-25T21:47:45.297 回答