2

我决定更新我所有的 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'
});

Js小提琴包括在下面

http://jsfiddle.net/T2AJ5/

编辑:

使用 chrome 开发工具,我在控制台读取错误:

Uncaught TypeError: Cannot use 'in' operator to search '42' in 为什么这在 jquery 1.9.1 中不起作用?:(

4

1 回答 1

6

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

顺便说一句,附加到innerHTML可能很麻烦。更好地使用DOM,请参阅此处了解包含在 jQuery 插件中的回调地狱 :-)

于 2013-02-25T19:43:19.020 回答