2

根据这篇文章,IE8 中的 jQueryfilter方法存在问题,但根据他们的 API 文档,该功能自 1.4 以来就存在,并且没有提及浏览器不兼容问题。

它是哪一个?

我没有安装 IE8 的系统,我的客户使用该版本,我在 Foxy 和 Chromy 上进行开发。客户端最终系统上的 jQuery 版本(至少)是 1.7。

4

2 回答 2

5

第一篇文章中的答案说明了本机 Array.prototype.filter方法,它是本机 Javascript 数组上的实用函数(您可以[].filter(...)在没有任何框架的情况下这样编写)。这在 IE8 中不受支持。

但是,您想使用 jQuery 的filter()方法(过滤 dom 节点),在 IE8 中使用是完全安全的;)

于 2013-07-12T12:15:48.123 回答
1

原生 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;
  };
}
于 2013-07-12T12:16:44.430 回答