我决定更新我的所有jquery以使用jquery 1.9.1,但我可以找出为什么这个脚本已经停止工作了。在所有其他jquery版本中都可以正常工作。
// Typewriter function
$.fn.Typewriter = function Typewriter(opts) {
var $this = this,
defaults = {
animDelay: 50
},
settings = $.extend(defaults, opts);
var objDiv = document.getElementById(settings.div);
$.each(settings.text, function (i, letter) {
setTimeout(function () {
$this.html($this.html() + (letter != '\n' ? letter : '<br />'));
objDiv.scrollTop = objDiv.scrollHeight;
}, settings.animDelay * i);
});
};
// Call with
// $('#divID').Typewriter({animDelay: 10,text: 'text to animate', div: 'divID'});
$('#outputDiv').Typewriter({
animDelay: 10,
text: 'Why does this not work in jquery 1.9.1? :( ',
div: 'outputDiv'
});
小提琴包含在下面
编辑:
使用chrome开发工具我在控制台中看到错误:
未捕获的TypeError:无法使用'in'运算符在Why中搜索'42' 这在jquery 1.9.1中不起作用吗? :(
答案 0 :(得分:6)
一个人不使用$.each
来循环字符串。我怀疑它之前是否正常工作。要快速解决问题,请将其更改为settings.text.split('')
。
顺便说一句,追加innerHTML
可以是troublesome。更好地使用DOM,请参阅here,了解jQuery插件中包含的回调地狱: - )