根据this post,在IE8中jQuery的filter
方法存在问题 - 但根据their API documentation,自1.4以来功能一直存在,并且没有提及浏览器不兼容性。
这是什么?
我没有安装IE8的系统,我的客户将使用该版本,我在Foxy和Chromy上开发。客户端最终系统上的jQuery版本(至少)为1.7。
答案 0 :(得分:5)
第一篇文章中的答案陈述了 native Array.prototype.filter
方法,它是本机Javascript Arrays上的实用函数(您可以在没有任何框架的情况下以这种方式编写[].filter(...)
)。 IE8不支持此功能。
但是,你想使用jQuery的filter()
方法(来过滤dom节点),这在IE8中使用是完全安全的;)
答案 1 :(得分:1)
Native JS array filter与jQuery filter不同。 如果您需要本机解决方案,可以为IE8实现shim / shiv
IE8不支持本机过滤器,但直到jQuery v2
才支持jQueryhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
if (!Array.prototype.filter)
{
Array.prototype.filter = function(fun /*, thisp*/)
{
"use strict";
if (this == null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (typeof fun != "function")
throw new TypeError();
var res = [];
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in t)
{
var val = t[i]; // in case fun mutates this
if (fun.call(thisp, val, i, t))
res.push(val);
}
}
return res;
};
}