为什么这个功能不再适用于jquery 1.9.1?

问题描述:

我决定更新我所有的jQuery以使用jquery 1.9.1,但我可以找出为什么此脚本停止工作。在所有其他jQuery版本中工作良好。包括以下为什么这个功能不再适用于jquery 1.9.1?

http://jsfiddle.net/T2AJ5/

编辑

// 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? :(

+0

请详细说明“停止工作”。有错误吗?什么都没有发生?你的电脑着火吗? – jbabey 2013-02-25 19:34:36

+0

没有任何反应,调用该函数不会输出任何内容到输出区域 – 2013-02-25 19:36:36

+1

您是否将字符串传递给'$ .each'? – Ian 2013-02-25 19:41:14

一不使用$.each来循环字符串。我怀疑它以前运作正常。要快速修复,请将其更改为settings.text.split('')

顺便说一句,附加到innerHTML可以是troublesome。请更好地使用DOM,请参阅here用于包装在jQuery插件中的回调地狱:-)

+2

示例:http://jsfiddle.net/T2AJ5/2/ – 2013-02-25 19:45:07

+0

感谢您的帮助Bergi和Kevin – 2013-02-25 19:50:03