2010-05-10 3 views

ответ

6

Там нет every метода, определенного в JQuery. Вы можете использовать вместо each:

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

или немного короче:

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

+1 - '$ .each()' определенно способ пойти на эту простую функцию обратного вызова ... – gnarf

+11

На всякий случай другие люди ищут jQuery каждый метод - 'each' и' every' очень разные вещи. '$ .each' вернет объект jQuery, где обычно при использовании' each' вы ожидаете логического. Не уверен, как я отношусь к тому, что этот ответ правильно обозначен. – Jesse

14

.every() является JavaScript 1.6 повышение к массиву прототипа. Firefox поддерживает этот метод в Gecko 1.8b2 и более поздних версиях, а вот быстрая замена, если она не существует.

От МДХ:

every is a recent addition to the ECMA-262 standard; as such it may not be present in all browsers. You can work around this by inserting the following code at the beginning of your scripts, allowing use of every in implementations which do not natively support it. This algorithm is exactly the one used in Firefox and 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; 
    }; 
} 
+0

Почему 'this.length >>> 0'? Делает ли это что-то другое, кроме возврата this.length? – Krab

+0

Это было скопировано из статьи MDC ... 'this.length >>> 0' - это неподписанный бит-брейк, единственная причина, по которой я мог бы подумать, что это означает, что' length' является неподписанным числом * shrug * – gnarf

0

Я недавно была та же проблема с .each функции, когда я попытался цикла посредством выбора элементов DOM. Оказывается, проблема не в Javascript. Это был HTML, специальный тег, который мы использовали. ABBR, не поддерживается IE6.

Предлагаю сначала проверить все ваши теги, убедиться, что все теги поддерживаются IE6.