Das obige Auswahlfeld würde die dritte Option als Standard ohne Probleme auswählen. Allerdings , wenn Sie die Elemente mit Firebug überprüfen, ist kein selected="selected"
-Attribut innerhalb der ausgewählten <option>
vorhanden.
Ich weiß, das ist kein großes Problem, da es immer noch funktioniert , aber ich brauche selected="selected"
, damit meine anderen Skripts es fangen und weiterverarbeiten können. Gibt es irgendwelche Problemumgehungen da draußen?
Danke.
Das selected
Attribut entspricht nicht dem aktuellen ausgewählten Status der Option. Das selected
-Attribut entspricht der Standard -Ausgewähltheit, die wiederhergestellt wird, wenn .reset()
im Formular aufgerufen wird (oder eine type="reset"
-Schaltfläche angeklickt wird). Auf den aktuellen Selectedness-Status kann mit der DOM-Eigenschaft selected
zugegriffen werden, während auf die Standard-Selectedness, auf die sich das Attribut bezieht, unter der DOM-Eigenschaft defaultSelected
zugegriffen wird.
Das gleiche gilt für value
vs defaultValue
für <input type="text">
/ <textarea>
und checked
/% für co_de% für defaultChecked
/ type="checkbox"
.
jQuerys "radio"
wird fälschlicherweise benannt, und seine Versuche, Attribute und Eigenschaften als identisch zu betrachten, sind fehlerhaft. Wenn Sie attr()
verwenden, greifen Sie normalerweise auf die Eigenschaft, nicht auf das Attribut zu. Folglich macht attr()
tatsächlich $(el).attr('selected', 'selected')
. Das funktioniert, weil el.selected= 'selected'
, wie bei jeder nicht leeren Zeichenkette, 'truthy' ist: es wird in 'selected'
konvertiert. Dies berührt jedoch zu keinem Zeitpunkt das Attribut el.selected= true
.
IE macht diese verwirrende Situation noch komplizierter, indem (a) selected="selected"
/ getAttribute
falsch wird, so dass es auf die Eigenschaften statt auf die Attribute zugreift (weshalb Sie diese Methoden nie in einem HTML-Dokument verwenden sollten), und ( b) Falsche Zuordnung des aktuellen Formularstatus zu den HTML-Attributen, sodass die Attribute tatsächlich in diesem Browser angezeigt werden.
aber ich brauche ausgewählt="ausgewählt" dort
Warum? Serialisieren Sie das Formular in setAttribute
? Dies beinhaltet keine Feldwerte (außer IE aufgrund des Fehlers), daher ist dies keine brauchbare Möglichkeit, Feldwerte zu speichern.
Tags und Links jquery jquery-selectors