我使用的打字機效果從this answer on SO打算有第一個div類型輸出,其次是第二個div(當第一個div輸入完成時)。如何使.each()等到每次迭代完成
<div class="text">
Lorem ipsum dolor sit amet...
</div>
<div class="text">
Cras eros augue, tempor...
</div>
JS:
// Create typewrite function as jQuery plugin:
// (From https://stackoverflow.com/a/22266737/3217306)
$.fn.typeText = function() {
var keystrokeDelay = 10,
self = this,
str = self.html(),
i = 0,
isTag,
text;
self.html("");
(function type() {
text = str.slice(0, ++i);
if (text == str) {
console.log("completed typing");
return;
}
self.html(text);
var char = text.slice(-1);
if (char == "<") {
isTag = true;
}
if (char == ">") {
isTag = false;
}
if (isTag) {
return type();
}
setTimeout(type, keystrokeDelay);
}());
};
var textElements = $(".text");
// For each div.text, type them out
textElements.each(function() {
$(this).typeText();
});
麻煩的是,無論是在同一時間打出來。我嘗試了許多涉及承諾,回調等不同的事情,但我無法讓他們爲這種情況工作。
嘗試使用遞歸函數,而不是'each' –