jquery的every()在Internet Explorer上不起作用

时间:2010-05-10 06:11:47

标签: javascript jquery internet-explorer

当我在IE中运行以下javascript时,我在“data.every(...)”上得到“错误:对象不支持此属性或方法”。

适用于Chrome / Firefox。

alt text

3 个答案:

答案 0 :(得分:14)

.every()是对Array原型的JavaScript 1.6增强。 Firefox在Gecko 1.8b2及更高版本中支持这种方法,如果它不存在,可以快速替换。

来自MDC:

  

every是ECMA-262标准的最新成员;因此,它可能不会出现在所有浏览器中。您可以通过在脚本开头插入以下代码来解决此问题,从而允许使用本身不支持它的每个实现。该算法与Firefox和SpiderMonkey中使用的算法完全相同。

if (!Array.prototype.every)
{
  Array.prototype.every = function(fun /*, thisp*/)
  {
    var len = this.length >>> 0;
    if (typeof fun != "function")
      throw new TypeError();

    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this &&
          !fun.call(thisp, this[i], i, this))
        return false;
    }

    return true;
  };
}

答案 1 :(得分:6)

jQuery中没有定义every方法。您可以改为使用each

$.each(data, function(index, task) {
    createCardFromTask(task);
});

或更短一些:

$.each(data, function() {
    createCardFromTask(this);
});

答案 2 :(得分:0)

当我尝试循环选择DOM元素时,我最近遇到了与.each函数相同的问题。事实证明问题不在于Javascript。这是HTML,我们正在使用的特殊标签。 IE6不支持ABBR。

我建议您先检查所有标签,确保IE6支持所有标签。