J'écris ma propre méthode de liaison JavaScript (pour la pratique) et je n'arrive pas à résoudre le besoin de gérer différemment des objets individuels et des objets multiples dans cette méthode, uniquement parce que je dois parcourir des objets d'une longueur supérieure à un. (voir obj vs obj [i] ci-dessous)Comment gérer des objets de longueur 1 et supérieure à 1 dans une méthode sans redondance
Est-il possible de rendre cette méthode de liaison moins redondante? (s'il vous plaît assumer à l'aide d'une autre bibliothèque est hors de question .. merci)
var foo = (function() {
return {
bind: function (obj, type, handler, delegate) {
var delegate = delegate || false,
len = obj.length;
if (typeof obj == 'undefined') {
return false;
}
if (len > 1) {
for (var i = 0; i < len; i++) {
if (obj.addEventListener) {
obj[i].addEventListener(type, handler, delegate); // false: bubble (^). true: capture (v).
} else if (obj.attachEvent) {
obj[i].attachEvent('on' + type, handler);
} else {
obj[i]['on' + type] = handler;
}
}
} else {
if (obj.addEventListener) {
obj.addEventListener(type, handler, delegate); // false: bubble (^). true: capture (v).
} else if (obj.attachEvent) {
obj.attachEvent('on' + type, handler);
} else {
obj['on' + type] = handler;
}
}
}
}
})();
Votre code ne fonctionnera pas pour les tableaux à un seul élément. – SLaks
J'avais à l'origine installé des méthodes de getElementByClass() pour retourner l'objet réel s'il avait une longueur de un. commencer à penser que c'était une idée stupide maintenant. Cela a essentiellement créé le besoin de lancer cette vérification dont vous parlez. – tester