IE7 / 8的jQuery map()错误
我有以下jquery代码:
$('.menubox').children('div').toArray().map(function(n,i){ return [$(n).children('input').val(),$(n).children('.subs').children('div').toArray().map(function(n,i){ return [$(n).children('input').val(),$(n).children('.subs').children('div').toArray().map(function(n,i){ return $(n).children('input').val(); })]; })]; });
这是与之相关的HTML:
LBL1
它在chrome中工作正常,但是IE会抛出一个错误:
错误:对象不支持此属性或方法
当我删除map()函数时,错误消失了。 我在这做什么冤枉?
我在这做什么冤枉?
在jQuery对象上调用.toArray()
。 删除这些调用,并在.map()
.get()
之后添加.get()
,如果你想得到一个vanilla JS数组。 请注意,jQuery的.map()
回调接受index, element
而Array.map
的回调接受element, index
因此您还需要交换参数名称。
var results = $('.menubox').children('div').map(function(i, n) { return [ $(n).children('input').val(), $(n).children('.subs').children('div').map(function(i, n) { return [ $(n).children('input').val(), $(n).children('.subs').children('div').map(function(i, n) { return $(n).children('input').val(); }).get() ]; }).get() ]; }).get(); console.log(JSON.stringify(results)); // ["-",[],"-",["3",[],"6",[]]]
这适用于Chrome但不支持IE,因为Chrome支持Array.map()
但(惊喜,惊喜)IE <9不支持。