2010-05-10 5 views

Répondre

6

Il n'y a pas méthode every définie dans jQuery. Vous pouvez utiliser each à la place:

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

ou un peu plus court:

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

+1 - '$ .each()' est certainement le chemin à parcourir pour cette simple fonction de rappel ... – gnarf

+11

Juste au cas où d'autres personnes viendraient chercher une méthode jQuery - 'each' et' every' sont des choses très différentes - '. $' retournera un objet jQuery, où normalement en utilisant 'every' vous attendez un booléen. Je ne sais pas comment je pense que cette réponse soit correcte. – Jesse

14

.every() est une amélioration JavaScript 1.6 au prototype Array. Firefox prend en charge cette méthode dans Gecko 1.8b2 et ultérieur, et voici un remplacement rapide s'il n'existe pas.

De MDC:

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

Pourquoi le 'this.length >>> 0'? Est-ce que cela fait autre chose que de retourner cette longueur? – Krab

+0

Cela a été copié à partir de l'article MDC ... 'this.length >>> 0' est un bitshift unsigned, la seule raison que je pourrais penser à ajouter c'est de s'assurer que' length' est un nombre non signé * shrug * – gnarf

0

J'ai eu récemment le même problème avec .each fonction lorsque j'ai essayé de boucle à travers la sélection d'éléments DOM. Il s'avère que le problème n'était pas avec Javascript. C'était le HTML, un tag spécial que nous utilisions. ABBR, n'est pas supporté par IE6.

Je vous suggère d'abord vérifier toutes vos étiquettes, assurez-vous que toutes les étiquettes sont supportées par IE6.

Questions connexes