ฉันจะใช้ 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-Escape ที่เหมาะสม