根据这篇文章,IE8 中的 jQueryfilter
方法存在问题,但根据他们的 API 文档,该功能自 1.4 以来就存在,并且没有提及浏览器不兼容问题。
它是哪一个?
我没有安装 IE8 的系统,我的客户将使用该版本,我在 Foxy 和 Chromy 上进行开发。客户端最终系统上的 jQuery 版本(至少)是 1.7。
根据这篇文章,IE8 中的 jQueryfilter
方法存在问题,但根据他们的 API 文档,该功能自 1.4 以来就存在,并且没有提及浏览器不兼容问题。
它是哪一个?
我没有安装 IE8 的系统,我的客户将使用该版本,我在 Foxy 和 Chromy 上进行开发。客户端最终系统上的 jQuery 版本(至少)是 1.7。
第一篇文章中的答案说明了本机 Array.prototype.filter
方法,它是本机 Javascript 数组上的实用函数(您可以[].filter(...)
在没有任何框架的情况下这样编写)。这在 IE8 中不受支持。
但是,您想使用 jQuery 的filter()
方法(过滤 dom 节点),在 IE8 中使用是完全安全的;)
原生 JS 数组过滤器与jQuery 过滤器不同。如果您需要本机解决方案,您可以为 IE8 实现 shim/shiv
IE8 不支持原生过滤器,但在 jQuery v2 之前支持 jQuery
https://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;
};
}