Bagaimana saya, dengan menggunakan JQuery, memeriksa apakah suatu nilai termasuk dalam daftar dropdown atau tidak?
Bagaimana saya, dengan menggunakan JQuery, memeriksa apakah suatu nilai termasuk dalam daftar dropdown atau tidak?
Jawaban:
Gunakan Attribute Equals Selector
var thevalue = 'foo';
var exists = 0 != $('#select-box option[value='+thevalue+']').length;
Jika nilai opsi ditetapkan melalui Javascript, itu tidak akan berhasil. Dalam hal ini kita dapat melakukan hal berikut:
var exists = false;
$('#select-box option').each(function(){
if (this.value == 'bar') {
exists = true;
return false;
}
});
return false
?
Untuk berjaga-jaga jika Anda (atau orang lain) tertarik melakukannya tanpa 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;
}
Berikut adalah opsi serupa lainnya. Dalam kasus saya, saya memeriksa nilai di kotak lain saat saya membuat daftar pilihan. Saya terus menemukan nilai yang tidak ditentukan ketika saya akan membandingkan, jadi saya mengatur cek saya seperti ini:
if ( $("#select-box option[value='" + thevalue + "']").val() === undefined) { //do stuff }
Saya tidak tahu apakah pendekatan ini lebih mahal.
Mengapa tidak menggunakan filter?
var thevalue = 'foo';
var exists = $('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length;
Perbandingan longgar berfungsi karena ada> 0 benar, ada == 0 salah, jadi Anda bisa menggunakannya
if(exists){
// it is in the dropdown
}
Atau gabungkan:
if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){
// found
}
Atau di mana setiap dropdown pilih memiliki kelas kotak-pilih ini akan memberi Anda objek jquery dari pilih yang berisi nilai:
var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent();
if(!$('#select-box').find("option:contains('" + thevalue + "')").length){
//do stuff
}
theValue
tetapi option_number
di dropdown. Solusi Anda salah.
Saya tahu ini adalah jenis pertanyaan lama karena yang satu ini bekerja lebih baik.
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);
}
Seperti yang Anda lihat dalam contoh ini, saya mencari berdasarkan tag unik nama dropdown data dan nilai opsi yang dipilih. Tentu saja Anda tidak memerlukan ini agar ini berfungsi tetapi saya memasukkannya sehingga orang lain dapat melihat Anda dapat mencari multi nilai, dll.
]
dan `\`. Hindari membuat string pemilih dari teks mentah tanpa melakukan pelolosan CSS yang benar.