2011-11-24 9 views
1

J'utilise jQuery 1.6.1 et la méthode attr(), Cela fonctionne très bien sur tous les navigateurs sauf IE7.SetAttribute ne fonctionne pas dans IE7

Dans la console, il met en évidence la fonction setAttribute dans jQuery JS et dit: Non Mis en œuvre

Je pense que IE7 ne supporte pas que, si j'ai essayé de travailler autour:

if(Object.prototype.hasOwnProperty('setAttribute')){ 
    $(e).attr(key, value); 
}else{ 
    e[key] = value; 
} 

Il me dit encore:

objet ne prend pas en charge cette action

Quelle est la solution pour cela?

+1

Eh bien, la méthode 'setAttribute' n'est certainement pas définie sur l'objet' Object.prototype' ... Elle est définie sur [l'interface * Element *] (http://www.w3.org/TR/domcore/ # interface-element) de la norme DOM. –

+1

La fonction setAttribute dans jQuery JS? Mais jQuery n'a pas de fonction setAttribute ... Just '$ (e) .attr (clé, valeur);' devrait fonctionner dans IE7. –

Répondre

1

jQuery traite tous les cas impairs, il n'y a généralement pas besoin de contourner quoi que ce soit. Notez également ce que dit Šime Vidas, setAttribute n'est pas défini sur Object.prototype et même si ce serait, dans IE8 et les éléments HTML inférieurs n'héritent pas de Object donc la détection de fonctionnalité ne fonctionnerait probablement pas comme prévu.

Quelle est la valeur de la variable key? Envisagez d'utiliser prop() si plus approprié, ou addClass() si vous travaillez avec des classes.

+0

La valeur de la clé est src, ou action, ou href. – Ryan

1

duri est exactement exact. Même si setAttribute ne fonctionne pas sur IE7, .attr() de jQuery. Le but de jQuery est de corriger ces différences entre les navigateurs et de définir un cadre dans lequel les actions communes fonctionneront.

Retirez le conditionnel de votre code, et il suffit de laisser ceci:

$(e).attr(key, value); 

Laissez jQuery gérer le reste pour vous; c'est pour ça.

Si cela ne fonctionne toujours pas, mettez à jour votre question avec les valeurs e, key et value, et les utilisateurs pourront peut-être vous aider.