Alors jQuery 1.6 a la nouvelle fonction prop()
.
$(selector).click(function(){
//au lieu de:
this.getAttribute('style');
//dois-je utiliser:
$(this).prop('style');
//ou:
$(this).attr('style');
})
ou dans ce cas, est-ce qu'ils font la même chose?
Et si je dois passer à utiliser prop()
, est-ce que tous les anciens appels à attr()
vont casser si je passe à la version 1.6?
MISE À JOUR
selector = '#id'
$(selector).click(function() {
//au lieu de:
var getAtt = this.getAttribute('style');
//dois-je utiliser:
var thisProp = $(this).prop('style');
//ou:
var thisAttr = $(this).attr('style');
console.log(getAtt, thisProp, thisAttr);
});
test
(voir aussi ce fiddle: http://jsfiddle.net/maniator/JpUF2/)
La console enregistre le getAttribute
comme une chaîne, et le attr
comme une chaîne, mais le prop
comme une CSSStyleDeclaration
, Pourquoi? Et comment cela affecte-t-il mon codage à l'avenir?
17 votes
Cela sera d'un intérêt certain : books.google.ca/…
29 votes
@Neal, c'est parce que ce changement va au-delà de jQuery. La différence entre les attributs HTML et les propriétés du DOM est énorme.
0 votes
@Matt mais qu'est-ce que
attr
retournait avant 1.6? est-ce que cela retournait toujours une chaîne de caractères?0 votes
.attr() a radicalement changé dans jQuery 1.6. Ici, le problème est expliqué: edgarinvillegas.wordpress.com/2011/05/10/…
0 votes
@Edgar, beaucoup des problèmes ont été fixés dans jQuery 1.6.1
7 votes
Cela me rend triste de voir que jQuery a annulé les changements. Ils vont dans la mauvaise direction.
4 votes
@Neal. Oui, et cela ne fait que compliquer davantage le problème au lieu de séparer les deux méthodes.
0 votes
L'attribut obsolète dans 1.9.0+ a été supprimé.
2 votes
Selon mes informations, à partir de la version 1.9,
attr()
ne fera plus de "magie" pour les propriétés. Ainsi,.attr('checked', false)
ne fera pas ce à quoi on pourrait s'attendre.0 votes
@Neal - l'accès aux propriétés via attr() a été supprimé pour certaines choses à partir de jQuery 1.9.0 jquery.com/upgrade-guide/1.9 descendez et lisez .attr() versus .prop() les attributs booléens tels que checked et disabled sur une case à cocher sont affectés par ce changement
0 votes
Voir ce fiddle jsfiddle.net/h682v/4, le changer en version 1.9.1, et voir que les propriétés pour disabled ne sont pas modifiées en utilisant attr - vérifier/décocher ces deux en bas sont toujours accessibles jusqu'à ce que vous changiez le
attr()
truc enprop()
- une instance du changement.1 votes
Votre connaissance collective de jQuery est impressionnante. Cependant, lorsque quelqu'un dit x vs y, il ne cherche qu'une simple comparaison, quand utiliser l'un et pas l'autre. Il ne veut pas une analyse approfondie. C'est pour cela qu'il est ici et ne lit pas la documentation. Toutes les réponses terribles
6 votes
@BritishDeveloper la réponse est plus compliquée que de simplement dire toujours utiliser x ou y car cela dépend de ce que vous avez l'intention d'obtenir. Voulez-vous l'attribut, ou voulez-vous la propriété ? Ce sont deux choses très différentes.
0 votes
Voir aussi Propriétés et attributs en HTML
0 votes
@Neal Je ne sais pas, il ne se concentre pas autant sur jQuery que cette question ici, donc il pourrait souvent être une meilleure cible de doublon.
0 votes
@Bergi les réponses ici ne font même pas référence à jQuery et sont essentiellement le point de référence canonique pour les propriétés don vs les attributs
0 votes
Vous n'avez plus besoin de
$(el).prop(...)
. Voir: youmightnotneedjquery.com/#get_outer_html