gpt4 book ai didi

javascript - 防止自定义 jquery 函数在同时运行时合并连接

转载 作者:行者123 更新时间:2023-11-28 19:26:36 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的 jquery“插件”,它可以像打字机一样为我输入文本。
这是我到目前为止所想到的:

jQuery.fn.typer=function(speed){
typed = this;
theText = typed.text().split('');
typed.text("");
$.each(theText, function(index, value){
setTimeout(function(){
typed.append(value);
},speed*index);
});
return;
};


$("#p0").typer(50);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id='p0'>This text will appear at the speed: 50</p>

这工作得很好,直到我尝试让它一次输入两个句子。

jQuery.fn.typer=function(speed){
typed = this;
theText = typed.text().split('');
typed.text("");
$.each(theText, function(index, value){
setTimeout(function(){
typed.append(value);
},speed*index);
});
return;
};


$("#p0").typer(50);
$("#p1").typer(100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id='p0'>This text will appear at the speed: 50</p><br />
<p id='p1'>This text will appear at the speed: 100</p>

我得到的结果是:TThihs itesxt wtilel xaptpe arw ait lthle spaeepd:p 5e0ar at the speed: 100

有什么线索可以阻止这种情况发生吗?
提前致谢。

最佳答案

不使用 var 关键字声明变量会将变量置于全局范围内。请参阅this question for more details .
因此,两个实例共享变量并导致您在上面看到的乱码。

jQuery.fn.typer=function(speed){
var typed = this;
var theText = typed.text().split('');
typed.text("");
$.each(theText, function(index, value){
setTimeout(function(){
typed.append(value);
},speed*index);
});
return;
};


$("#p0").typer(50);
$("#p1").typer(100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id='p0'>This text will appear at the speed: 50</p><br />
<p id='p1'>This text will appear at the speed: 100</p>

关于javascript - 防止自定义 jquery 函数在同时运行时合并连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27787749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com