$('#mySelectBox option').each(function() {
if ($(this).isChecked())
alert('this option is selected');
else
alert('this is not');
});
Anscheinend funktioniert das isChecked
nicht. SO meine Frage ist, wie man das richtig macht? Danke.
[~ # ~] Update [~ # ~]
Eine direktere jQuery-Methode für die ausgewählte Option wäre:
var selected_option = $('#mySelectBox option:selected');
Die Beantwortung der Frage .is(':selected')
ist das, wonach Sie suchen:
$('#mySelectBox option').each(function() {
if($(this).is(':selected')) ...
Die Non-JQuery-Methode (wohl die beste Vorgehensweise) wäre:
$('#mySelectBox option').each(function() {
if(this.selected) ...
Wenn Sie jedoch nur nach dem ausgewählten Wert suchen, versuchen Sie Folgendes:
$('#mySelectBox').val()
Wenn Sie nach dem Text des ausgewählten Werts suchen, gehen Sie wie folgt vor:
$('#mySelectBox option').filter(':selected').text();
Check out: http://api.jquery.com/selected-selector/
Suchen Sie das nächste Mal nach Duplikaten SO Fragen:
Aktuelle ausgewählte Option abrufen oder Ausgewählte Option festlegen oder Wie erhält man eine ausgewählte Option in jQuery? oder Option [ausgewählt] = true] funktioniert nicht
Sie können die ausgewählte Option folgendermaßen abrufen:
$('#mySelectBox option:selected')...
Wenn Sie jedoch alle Optionen durchlaufen möchten, verwenden Sie this.selected
Anstelle von this.isChecked
, Das nicht vorhanden ist:
$('#mySelectBox option').each(function() {
if (this.selected)
alert('this option is selected');
else
alert('this is not');
});
Update:
Sie haben viele Antworten erhalten, die Ihnen vorschlagen, diese zu verwenden:
$(this).is(':selected')
Nun, mit this.selected
geht das viel schneller und einfacher. Warum sollten Sie es also verwenden und nicht die native DOM-Elementmethode ?!
Lesen Sie Kennen Sie Ihre DOM-Eigenschaften und -Funktionen in jQuery
Tag-Info
Wenn Sie mit is()
nicht vertraut oder vertraut sind, können Sie einfach den Wert von prop("selected")
überprüfen.
$('#mySelectBox option').each(function() {
if ($(this).prop("selected") == true) {
// do something
} else {
// do something
}
});
Bearbeiten :
Wie @gdoron in den Kommentaren ausführte, erfolgt der schnellere und am besten geeignete Zugriff auf die ausgewählte Eigenschaft einer Option über den DOM-Selektor. Hier ist die Geige pdate zeigt diese Aktion.
if (this.selected == true) {
scheint genauso gut zu funktionieren! Danke gdoron.
Betrachten Sie dies als Ihre Auswahlliste:
<select onchange="var optionVal = $(this).find(':selected').val(); doSomething(optionVal)">
<option value="mostSeen">Most Seen</option>
<option value="newst">Newest</option>
<option value="mostSell">Most Sell</option>
<option value="mostCheap">Most Cheap</option>
<option value="mostExpensive">Most Expensive</option>
</select>
dann markieren Sie die gewählte Option wie folgt:
function doSomething(param) {
if ($(param.selected)) {
alert(param + ' is selected!');
}
}
verwenden
$("#mySelectBox option:selected");
um zu testen, ob es sich um eine bestimmte Option handelt myoption
:
if($("#mySelectBox option:selected").text() == myoption){
//...
}
Sie können diesen Weg per jquery benutzen:
$(document).ready(function(){
$('#panel_master_user_job').change(function () {
var job = $('#panel_master_user_job').val();
alert(job);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="job" id="panel_master_user_job" class="form-control">
<option value="master">Master</option>
<option value="user">User</option>
<option value="admin">Admin</option>
<option value="custom">Custom</option>
</select>
Wenn Sie die ausgewählte Option auf einen bestimmten Wert prüfen müssen :
$('#selectorId option[value=YOUR_VALUE]:selected')
Wenn Sie nur überprüfen möchten, ob eine Option ausgewählt ist, müssen Sie nicht alle Optionen durchlaufen. Mach einfach
if($('#mySelectBox').val()){
// do something
} else {
// do something else
}
Hinweis: Wenn Sie eine Option mit dem Wert 0 auswählen möchten, müssen Sie die if-Bedingung in $('#mySelectBox').val() != null
ändern.
In meinem Fall weiß ich nicht, warum ausgewählt immer wahr ist. Der einzige Weg, auf dem ich nachdenken konnte, ist:
var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
var optionHTMLStr = el.outerHTML;
if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
optionSelected = true;
return false;
}
});