2010-12-11 30 views
0

Je peux changer l'attribut de valeur d'un HTMLOptionElement en le faisant:Pourquoi attr (attributeName, value) ne crée-t-il pas un nouvel objet Attr dans les attributs DOM NamedNodeMap?

sizeOptionToBeSelected.attr('value', '555'); 

Il change la propriété de valeur de la HTMLOptionElement et la valeur de l'objet DOM Attr dans NamedNodeMap attributs propriété du même objet HTMLOptionElement.

Mais, je ne peux pas créer un nouveau Attr « sélectionné » ou modifier la propriété sélectionnée du HTMLOptionElement avec le code suivant:

sizeOptionToBeSelected.attr('selected', 'true'); 

Pourquoi pensez-vous que cela est? Comment puis-je faire ceci?

De la documentation jquery:

Nous pouvons ajouter un attribut de la même façon: $ ('# greatphoto') attr ('title', 'Photo par Kelly Clark');.

explications supplémentaires:
- Le code est exécuté dans le $ (document) .ready (fonction donc il n'y a pas de problème avec le chargement
- j'utilise la dernière version bêta de Google Chrome 8.0.552.215

..

Cordialement,
Despot

+0

Bien que j'ai résolu la façon dont la méthode attr de jQuery fonctionne, peut-être est-ce une bonne idée de fournir des indices quant aux raisons pour lesquelles j'essayais de le faire (je pense que cela sera utile pour les autres utilisateurs). J'ai supprimé toutes les options d'une étiquette de sélection et j'ai rempli avec de nouvelles. Et l'idée était de faire l'option précédemment sélectionnée, sélectionnée à nouveau. La bonne façon de procéder est: $ ('# selectId'). Val (theSelectedOptionValue); Pour en savoir plus, voir ceci: http://stackoverflow.com/questions/927656/jquery-select-the-same-option-on-three-select-drop-downs-with-one-action – despot

Répondre

0

jQuery, un peu confusément, tend à traiter les attributs et propriétés comme la même chose. donc $(elem).attr('selected', true) est effectivement mise en elem « s selected propriété à vrai, pas son attribut.

Il y a très peu de raisons de besoin pour définir l'selectedattribut. Définir le selected (et defaultSelected) propriétés devrait suffire.

De plus, gardez à l'esprit que l'attribut correspond à l'état par défaut, pas à l'état actuel.

+0

Je lis aussi http: //stackoverflow.com/questions/3953028/any-diffrence-between-element-setattribute-elementattr-element-attr avant de poster. J'aurais dû comprendre que jQuery ne peut pas créer l'objet Attr DOM. Une autre chose est que la déclaration de jQuery "Nous pouvons ajouter un attribut de la même façon: $ ('# greatphoto'). Attr ('title', 'Photo par Kelly Clark');" n'est pas correct. Doit seulement dire "changer" ou "définir", mais pas "ajouter un attribut". Cela a créé une confusion pour moi. Merci quand même. – despot