jQuery每个都在新版本中迭代一个字符串

时间:2013-11-19 15:47:22

标签: javascript jquery each

我有这个与jQuery 1.7x一起使用的代码,它在1.10中停止工作。我找不到任何关于它的信息或错误报告,也许有人知道。

因此迭代字符串可以在jQuery 1.8.3 - http://jsfiddle.net/pavdro/W849v/1/

中使用
var box = $("#test-console");
$.each("1Test1", function (ind, c) {
        box.html(box.html() + "|" + c);
    });

但不再使用1.10了 - http://jsfiddle.net/pavdro/W849v/2/

TypeError: invalid 'in' operand obj
typeof length === "number" && length > 0 && ( length - 1 ) in obj );

有什么想法吗?

由于

P.S。我知道如何使用纯粹的js版本,我只对这个特殊问题感兴趣。

2 个答案:

答案 0 :(得分:1)

这是因为先前$.each方法正在检查第一个参数是否为对象:

isObj = length === undefined || jQuery.isFunction( obj );

现在它会检查第一个参数是否为数组:

isArray = isArraylike( obj );

当尝试检查isArraylike是否在( length - 1 )中时,函数obj会抛出异常,即数字是否在字符串中。在控制台中尝试5 in 'string',您将获得相同的异常。

参考: https://github.com/jquery/jquery/blob/master/src/core.js#L514

答案 1 :(得分:0)

jQuery每个实现都发生了变化(由VisioN回答)。 jQuery每个都需要一个数组作为第一个参数;见doc

尝试:

var box = $("#test-console");
$.each(["1Test1"], function (ind, c) {
    box.html(box.html() + "|" + c);
});