Как я могу, используя JQuery, проверить, принадлежит ли значение выпадающему списку или нет?Проверьте, находится ли значение в списке выбора с помощью JQuery
ответ
Используйте Attribute Equals Selector
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;
}
});
Только в случае, если вы (или кто-то другой) может быть интересно делать это без 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 dropdown имеет класс select-boxes, это даст вам объект jquery выбора (ов), который содержит значение:
var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent();
Это imho самый интуитивный способ. – Simon
if(!$('#select-box').find("option:contains('" + thevalue + "')").length){
//do stuff
}
Явный второй подход также безопаснее, поскольку он позволяет значения параметров, содержащие любые символы, включая ']' и '' \\. Избегайте создавать селекторные строки из необработанного текста, не выполняя надлежащего CSS-экранирования. – bobince
Почему 'return false'? –
Возврат false используется для разрыва/завершения цикла .each. – Angel