Wie kann ich mit JQuery überprüfen, ob ein Wert zur Dropdown-Liste gehört oder nicht?
Wie kann ich mit JQuery überprüfen, ob ein Wert zur Dropdown-Liste gehört oder nicht?
Antworten:
Verwenden Sie den Attribut-Gleichheits-Selektor
var thevalue = 'foo';
var exists = 0 != $('#select-box option[value='+thevalue+']').length;
Wenn der Wert der Option über Javascript festgelegt wurde, funktioniert dies nicht. In diesem Fall können wir Folgendes tun:
var exists = false;
$('#select-box option').each(function(){
if (this.value == 'bar') {
exists = true;
return false;
}
});
return false
?
Nur für den Fall, dass Sie (oder jemand anderes) daran interessiert sein könnten, dies ohne jQuery zu tun:
var exists = false;
for(var i = 0, opts = document.getElementById('select-box').options; i < opts.length; ++i)
if( opts[i].value === 'bar' )
{
exists = true;
break;
}
Hier ist eine andere ähnliche Option. In meinem Fall überprüfe ich die Werte in einem anderen Feld, während ich eine Auswahlliste erstelle. Beim Vergleichen sind mir immer wieder undefinierte Werte begegnet, daher habe ich meine Prüfung folgendermaßen eingestellt:
if ( $("#select-box option[value='" + thevalue + "']").val() === undefined) { //do stuff }
Ich habe keine Ahnung, ob dieser Ansatz teurer ist.
Warum nicht einen Filter verwenden?
var thevalue = 'foo';
var exists = $('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length;
Lose Vergleiche funktionieren, weil existiert> 0 ist wahr, existiert == 0 ist falsch, also können Sie einfach verwenden
if(exists){
// it is in the dropdown
}
Oder kombinieren Sie es:
if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){
// found
}
Oder wenn jede Auswahl-Dropdown-Liste die Auswahlfeld-Klasse hat, erhalten Sie ein Abfrageobjekt der Auswahl (en), die den Wert enthalten:
var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent();
if(!$('#select-box').find("option:contains('" + thevalue + "')").length){
//do stuff
}
theValue
nur das option_number
In-Dropdown. Ihre Lösung ist falsch.
Ich weiß, dass dies eine alte Frage ist, die besser funktioniert.
if(!$('.dropdownName[data-dropdown="' + data["item"][i]["name"] + '"] option[value="'+data['item'][i]['id']+'"]')[0]){
//Doesn't exist, so it isn't a repeat value being added. Go ahead and append.
$('.dropdownName[data-dropdown="' + data["item"][i]["name"] + '"]').append(option);
}
Wie Sie in diesem Beispiel sehen können, suche ich nach eindeutigen Tags, dem Dropdown-Namen für Daten und dem Wert der ausgewählten Option. Natürlich brauchen Sie diese nicht, damit diese funktionieren, aber ich habe sie eingefügt, damit andere sehen können, dass Sie nach mehreren Werten usw. suchen können.
]
und `\`. Vermeiden Sie es, Auswahlzeichenfolgen aus Rohtext zu erstellen, ohne eine ordnungsgemäße CSS-Escape-Funktion auszuführen.