Ich habe zwei jQuery-Ausdrücke:
%Vor% was bedeuten (nehmen wir an, es gibt nur ein select
im Dokument, zur Vereinfachung):
select
und suchen Sie dann alle option
Nachkommen, die ein Attribut mit dem Namen selected
. select
und suchen Sie dann alle Nachkommen von option
. Filtern Sie anschließend nach denen, die ein Attribut mit dem Namen selected
. A und B sollten dasselbe Ergebnis liefern.
Nachdem der Benutzer die Auswahl im Dropdown-Menü geändert hat,
option
. option
. Warum sind sie anders? Ist mein Verständnis über CSS-Selektoren falsch?
HTML :
%Vor%JavaScript :
%Vor%option
. option
. Wie Sie sehen können, geben alle Browser außer IE6 andere Ergebnisse.
[selected]
stimmt mit allen Elementen überein, die ein Attribut selected
haben, mit einem beliebigen Wert (Referenzen: W3C , jQuery ).
Ich habe einen Fehlerbericht an jQuery hier gesendet. Es ist markiert als ein Duplikat von einem weiteren Fehlerbericht , der jetzt behoben ist.
Um die aktuelle Auswahl zu erhalten :
Verwenden Sie den :selected
Selektor (Live-Demo hier ):
Beachten Sie, dass der zweite Ausdruck laut doc . < sein sollte / p>
Da Um die Standardauswahl zu erhalten: Verwenden Sie für jQuery 1.9 + einen der Ausdrücke wie in der Frage, d. h. Verwenden Sie für jQuery 1.6 + die
:selected
eine jQuery-Erweiterung ist und nicht Teil der CSS-Spezifikation ist, können Abfragen, die :selected
verwenden, nicht den Leistungsschub nutzen, der von der nativen Methode DOM querySelectorAll()
bereitgestellt wird. defaultSelected
-Eigenschaft (Live-Demo hier ) , Referenzen: w3schools , Mozilla , MSDN , MSDN ):
Die Sizzle-Engine prüft die selected
-Eigenschaft eines Elements (die den aktuellen -Wert enthält) und nicht das -Attribut , das den Wert enthält Original (Standardwert).
Siehe Ссылка
Was ich noch nicht herausgefunden habe, ist, warum dein zweiter Selektor anscheinend Sizzle aufruft, aber der erste scheint das nicht zu tun.
In jedem Fall sollten Sie die Eigenschaft überprüfen, die Sie überprüfen sollten, und nicht das Attribut. Daher sollten Sie den Pseudo-Selektor :selected
und nicht [selected]
Wenn Sie option[selected]
schreiben, wird nach dem Attribut selected
/ property gesucht
stattdessen sollten Sie option:selected
verwenden
Wenn Sie die Eigenschaft readonly
haben und den Code option[readonly]
eingeben, wird s
$ ('[Attribut]') wählt Elemente mit dem angegebenen Attribut mit einem beliebigen Wert aus.
Für weitere Informationen: Hat Attributauswahl [name]
Dies hängt davon ab, wie das DOM vom Browser erstellt wird. Verwendung von option[selected]
jQuery sucht nach einem Optionselement mit dem ausgewählten Attribut, das in einigen Fällen nicht angewendet wird
Sie sollten
verwenden %Vor%Tags und Links jquery jquery-selectors html-select