Як я можу за допомогою 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
}
Або там, де в кожному спадному меню вибору є клас вибірок, це дасть вам об'єкт 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-ухилень.