@superuberduper Ich habe jquery so lange ich konnte vermieden, aber Widerstand ist zwecklos. Du wirst dich so viel besser fühlen, nachdem du assimiliert wurdest.
Was bedeutet die Syntax $ ("Selektor", diese)? Ich habe eine allgemeine Idee, aber ich bin nicht ganz sicher
JoshWillik
14
@JoshWillik mit $("selector", this)Ihnen finden alle selectorElemente im thisKontext. Schreiben $("selector", this)ist fast das gleiche wie $(this).find('selector')
Bellash
8
@JoshWillik: Da $()es sich um einen Alias von handelt jQuery(), finden Sie die Dokumentation hier: api.jquery.com/jQuery Die dort angegebene Signatur ist offensichtlich jQuery( selector [, context ] ). @ Bellash: Wenn es "fast gleich" ist, was ist der Unterschied? Oder was ist schneller? Ich bevorzuge, .find()da dies mehr OO IMO ist ...
Adrian Föder
7
Wie überprüfe ich bei Mehrfachauswahl?
Hemant_Negi
3
@ AdrianFöder Für Sie und andere Leute, die danach suchen, .find()ist laut dieser Antwort etwa 10% schneller: stackoverflow.com/a/9046288/2767703
Die obige Lösung funktioniert perfekt, aber ich füge den folgenden Code hinzu, damit sie die angeklickte Option erhalten. Sie können die ausgewählte Option auch dann erhalten, wenn sich dieser Auswahlwert nicht geändert hat. (Nur mit Mozilla getestet)
Die Bindung an optionEreignisse ist insbesondere auf Mobilgeräten ein riskantes Unterfangen. Zum Beispiel unterstützt Webkit dieses Ereignis nicht richtig: bugs.chromium.org/p/chromium/issues/detail?id=5284
Ian Kemp
OK Cool! Wie gesagt, die zweite Lösung wird in vielen Browsern nicht unterstützt!
Bellash
15
Delegierte Alternative
Wenn jemand den delegierten Ansatz für seinen Listener verwendet, verwenden Sie e.target(er bezieht sich auf das Auswahlelement).
$('#myform').on('change','select',function(e){var val = $(e.target).val();var text = $(e.target).find("option:selected").text();//only time the find is requiredvar name = $(e.target).attr('name');}
+1, weil dies das ist, was ich will, aber als ich es lokal ausprobiert habe, funktioniert es nicht. Nur bei jsfiddle arbeiten, was ist das CDN, das ich hinzufügen muss?
AVI
6
Ich finde das kürzer und sauberer. Außerdem können Sie ausgewählte Elemente durchlaufen, wenn mehr als eines vorhanden ist.
selectedOptionsist nicht in allen Browsern verfügbar.
Bernhard Döbler
@ BernhardDöbler welche? irgendeine Quelle?
1,44 MB
1
Ich habe Ihren Code in IE 11 kopiert und eine Fehlermeldung erhalten. Ich endete mit this.options[ this.options.selectedIndex ]. Mozilla sagt, wird von Firefox ab 26 unterstützt, IE Keine Unterstützung.
Bernhard Döbler
6
<selectid="selectId"><optionvalue="A">A</option><optionvalue="B">B</option><optionvalue="C">C</option></select>
$('#selectId').on('change', function () {
var selectVal = $("#selectId option:selected").val();
});
Erstellen Sie zuerst eine select option. Danach jquerykönnen Sie den aktuell ausgewählten Wert abrufen, wenn der Benutzer den select optionWert ändert .
Wenn dies der Fall ist, warum nicht "var selectedVal = $ (" # selectElement "). val ()" work¿
LuisE
Der Fall erhält einen Wert, wenn ein Änderungsereignis für das ausgewählte Element ausgegeben wird. Der Wert wird nicht aktualisiert, wenn Sie Änderungen auswählen, wenn Sie dies möchten.
Antworten:
quelle
$("selector", this)
Ihnen finden alleselector
Elemente imthis
Kontext. Schreiben$("selector", this)
ist fast das gleiche wie$(this).find('selector')
$()
es sich um einen Alias von handeltjQuery()
, finden Sie die Dokumentation hier: api.jquery.com/jQuery Die dort angegebene Signatur ist offensichtlichjQuery( selector [, context ] )
. @ Bellash: Wenn es "fast gleich" ist, was ist der Unterschied? Oder was ist schneller? Ich bevorzuge,.find()
da dies mehr OO IMO ist ....find()
ist laut dieser Antwort etwa 10% schneller: stackoverflow.com/a/9046288/2767703Sie können die Methode jQuery find verwenden
Die obige Lösung funktioniert perfekt, aber ich füge den folgenden Code hinzu, damit sie die angeklickte Option erhalten. Sie können die ausgewählte Option auch dann erhalten, wenn sich dieser Auswahlwert nicht geändert hat. (Nur mit Mozilla getestet)
quelle
option
Ereignisse ist insbesondere auf Mobilgeräten ein riskantes Unterfangen. Zum Beispiel unterstützt Webkit dieses Ereignis nicht richtig: bugs.chromium.org/p/chromium/issues/detail?id=5284Delegierte Alternative
Wenn jemand den delegierten Ansatz für seinen Listener verwendet, verwenden Sie
e.target
(er bezieht sich auf das Auswahlelement).JSFiddle Demo
quelle
Ich finde das kürzer und sauberer. Außerdem können Sie ausgewählte Elemente durchlaufen, wenn mehr als eines vorhanden ist.
quelle
selectedOptions
ist nicht in allen Browsern verfügbar.this.options[ this.options.selectedIndex ]
. Mozilla sagt, wird von Firefox ab 26 unterstützt, IE Keine Unterstützung.Erstellen Sie zuerst eine
select option
. Danachjquery
können Sie den aktuell ausgewählten Wert abrufen, wenn der Benutzer denselect option
Wert ändert .quelle
quelle
Ein weiterer und kurzer Weg, um den Wert des ausgewählten Werts zu erhalten,
quelle
Siehe offizielle API-Dokumentation https://api.jquery.com/selected-selector/
Das funktioniert gut:
und
und einfach für eine einzigartige Wahl sein
quelle
Sie können dieses jquery select change-Ereignis verwenden, um den ausgewählten Optionswert abzurufen
Für die Demo
quelle