Как я могу с помощью JQuery проверить, принадлежит ли значение раскрывающемуся списку или нет?
Как я могу с помощью JQuery проверить, принадлежит ли значение раскрывающемуся списку или нет?
Ответы:
Используйте переключатель "Атрибут равно"
var thevalue = 'foo';
var exists = 0 != $('#select-box option[value='+thevalue+']').length;
Если значение параметра было установлено через Javascript, это не сработает. В этом случае мы можем сделать следующее:
var exists = false;
$('#select-box option').each(function(){
if (this.value == 'bar') {
exists = true;
return false;
}
});
return false
?
На всякий случай вам (или кому-то еще) может быть интересно сделать это без jQuery:
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;
}
Вот еще один аналогичный вариант. В моем случае я проверяю значения в другом поле, когда создаю список выбора. Я продолжал сталкиваться с неопределенными значениями, когда сравнивал, поэтому я установил свой чек следующим образом:
if ( $("#select-box option[value='" + thevalue + "']").val() === undefined) { //do stuff }
Понятия не имею, дороже ли этот подход.
Почему бы не использовать фильтр?
var thevalue = 'foo';
var exists = $('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length;
Слабые сравнения работают, потому что существует> 0 истинно, существует == 0 ложно, поэтому вы можете просто использовать
if(exists){
// it is in the dropdown
}
Или совместите это:
if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){
// found
}
Или, если каждое раскрывающееся меню выбора имеет класс select-box, это даст вам объект jquery для выбора (ов), который содержит значение:
var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent();
if(!$('#select-box').find("option:contains('" + thevalue + "')").length){
//do stuff
}
theValue
а option_number
в раскрывающемся списке. Ваше решение неверное.
Я знаю, что это старый вопрос, потому что этот работает лучше.
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);
}
Как вы можете видеть в этом примере, я ищу по уникальному имени тега в раскрывающемся списке данных и значению выбранной опции. Конечно, они вам не нужны для работы, но я добавил их, чтобы другие могли видеть, что вы можете искать по нескольким значениям и т. Д.
]
и `\`. Избегайте создания строк селектора из необработанного текста без надлежащего экранирования CSS.