javascript - 为什么这个函数在 jquery 1.9.1 中不再起作用?

标签 javascript jquery

我已经决定更新我所有的 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 fiddle

http://jsfiddle.net/T2AJ5/

编辑:

使用 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 插件中的那个回调 hell :-)

关于javascript - 为什么这个函数在 jquery 1.9.1 中不再起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15074930/

相关文章:

javascript - 创建带有圆形滚动的水平RecyclerView

javascript - 如何在没有 JS 的情况下获得带有嵌套 UL 的大型菜单?

javascript - 如何检查 div 是否距离顶部 100 像素并向其添加类?

javascript - 如何在不链接到播放列表的情况下播放两个 Youtube 视频?

javascript - 如何对延迟函数执行单元测试?

Javascript 链接多个函数而不是传递函数作为参数

jQuery Ready 函数区别

javascript - 单击功能替换div id

javascript - JQuery - 根据 2 个不同的选择下拉值显示隐藏 DIVS

javascript - 使用 jquery datepicker 格式化日期