为什么这个功能不再适用于jquery 1.9.1?
我决定更新我所有的jQuery以使用jquery 1.9.1,但我可以找出为什么此脚本停止工作。在所有其他jQuery版本中工作良好。包括以下为什么这个功能不再适用于jquery 1.9.1?
编辑
// 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'
});
的js小提琴:
使用Chrome的开发工具,我在控制台中读取一个错误:
Uncaught TypeError: Cannot use 'in' operator to search for '42' in Why does this not work in jquery 1.9.1? :(
一不使用$.each
来循环字符串。我怀疑它以前运作正常。要快速修复,请将其更改为settings.text.split('')
。
顺便说一句,附加到innerHTML
可以是troublesome。请更好地使用DOM,请参阅here用于包装在jQuery插件中的回调地狱:-)
示例:http://jsfiddle.net/T2AJ5/2/ – 2013-02-25 19:45:07
感谢您的帮助Bergi和Kevin – 2013-02-25 19:50:03
请详细说明“停止工作”。有错误吗?什么都没有发生?你的电脑着火吗? – jbabey 2013-02-25 19:34:36
没有任何反应,调用该函数不会输出任何内容到输出区域 – 2013-02-25 19:36:36
您是否将字符串传递给'$ .each'? – Ian 2013-02-25 19:41:14