Typed.js - 如何多次调用函数 onClick

Typed.js - how to call function onClick multiple times

我正在使用 typed.js

我想 运行 单击按钮时的功能。但是我只能在第一次点击时让 typed 函数工作一次。

$(function(){
    var options = {
        strings: ["First sentence.", "Second sentence."],
        typeSpeed: 0
    }
    $("button").click(function(){
        $(".element").typed(options);
    });
});

参见这个 fiddle 例如:http://jsfiddle.net/mattboldt/tcRUG/

Type.js 没有给出任何方法。我尝试使用它的 api 但它到处都在使用 seTimeout 并且行为异步并且不提供任何 promise/deferred 对象。要让它工作,一种解决方案是删除元素并重新创建。就我个人而言,我不喜欢这个解决方案,看起来很笨拙,但它完成了工作

$(function(){
    var options = {
        strings: ["First sentence.", "Second sentence."],
        typeSpeed: 0,
        callback: function(){
            var x = $(".element").text();
            $("#maindiv").html("");
            $("#maindiv").append('<span class="element">'+x+'</span>');
        }
    }
    $("button").click(function(){ 
        $(".element").text('');
       $(".element").typed(options);        
    });
}); 

在HTML

<div id="maindiv"><span class="element"></span></div>
<button>Type!</button>

我最近遇到了类似的问题。我实现了答案,但我也希望前一个字符串为 'stick'。

例如,onclick 我想在输入新字符串之前先将前一个字符串退格。

我将其添加到 typed 的初始化中

// Set the default string
if(self.isDefaultString) {
    self.strPos = self.strings[self.sequence[self.arrayPos]].length;

    if (self.isInput) {
        self.el.val(self.strings[self.sequence[self.arrayPos]]);
    } else if (self.contentType === 'html') {
        self.el.html(self.strings[self.sequence[self.arrayPos]]);
    } else {
        self.el.text(self.strings[self.sequence[self.arrayPos]]);
    }
}

以及启动类型化对象时的状态

// default string of text
this.isDefaultString = this.options.isDefaultString;

然后像这样实现输入

$("#contact header b").typed({
     strings: ["s1", "s2"],
     isDefaultString: true,
     typeSpeed: 30,
     startDelay: 250,
     showCursor: false
});

结果是我会从屏幕上的字符串 "s2" 开始然后键入将删除它并键入 "s1".

这很有用,因为如果您想调用稍后输入的内容,请单击。您可以将默认值设置为 "s2"。然后键入将删除 "s2" 并打印 "s3".