2013-02-25 63 views
2

我決定更新我所有的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

回答

6

一不使用$.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

相關問題