.every()
是 JavaScript 1.6 对数组原型的增强。Firefox 从 Gecko 1.8b2 开始支持此方法,如果不支持,请使用以下代码进行快速替换。
来自 MDC:
every
是 ECMA-262 标准的最新补充;因此,它可能不会在所有浏览器中存在。您可以通过将以下代码插入到脚本开头来解决这个问题,在不原生支持 every 的实现中使用它。这个算法正是 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;
};
}
jQuery中没有定义every
方法。你可以使用each代替:
$.each(data, function(index, task) {
createCardFromTask(task);
});
稍微简短一些:
$.each(data, function() {
createCardFromTask(this);
});
$.each()
绝对是这个简单回调函数的最佳选择... - gnarfeach
和 every
是非常不同的东西 - $.each
将返回一个 jQuery 对象,而通常使用 every
时会期望返回一个布尔值。对于这个答案被标记为正确,我不确定自己的感觉如何。 - Jesse最近我在尝试循环遍历DOM元素的选择时,也遇到了使用.each函数的同样问题。结果发现问题并不是出在Javascript上,而是HTML中我们使用了一个特殊的标签。ABBR标签在IE6中不被支持。
我建议你首先检查所有的标签,确保它们都被IE6所支持。
this.length >>> 0
?它除了返回this.length
之外还有其他作用吗? - Krabthis.length >>> 0
是一个无符号位移,我能想到唯一的原因是确保length
是一个无符号数 耸肩 - gnarf