可以在IE8中使用jQuery的过滤方法吗?

时间:2013-07-12 12:12:24

标签: jquery internet-explorer-8

根据this post,在IE8中jQuery的filter方法存在问题 - 但根据their API documentation,自1.4以来功能一直存在,并且没有提及浏览器不兼容性。

这是什么?

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

2 个答案:

答案 0 :(得分:5)

第一篇文章中的答案陈述了 native Array.prototype.filter方法,它是本机Javascript Arrays上的实用函数(您可以在没有任何框架的情况下以这种方式编写[].filter(...))。 IE8不支持此功能。

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

答案 1 :(得分:1)

Native JS array filterjQuery filter不同。 如果您需要本机解决方案,可以为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;
  };
}