ฉันต้องตรวจสอบว่า<select>
มีตัวเลือกที่ข้อความเท่ากับค่าเฉพาะ
ตัวอย่างเช่นหากมี<option value="123">abc</option>
ฉันจะมองหา "abc"
มีตัวเลือกให้ทำเช่นนี้หรือไม่?
ฉันกำลังมองหาสิ่งที่คล้ายกับ$('#select option[value="123"]');
แต่สำหรับข้อความ
ฉันต้องตรวจสอบว่า<select>
มีตัวเลือกที่ข้อความเท่ากับค่าเฉพาะ
ตัวอย่างเช่นหากมี<option value="123">abc</option>
ฉันจะมองหา "abc"
มีตัวเลือกให้ทำเช่นนี้หรือไม่?
ฉันกำลังมองหาสิ่งที่คล้ายกับ$('#select option[value="123"]');
แต่สำหรับข้อความ
คำตอบ:
สิ่งนี้สามารถช่วย:
$('#test').find('option[text="B"]').val();
นี้จะให้คุณเลือกที่มีข้อความและไม่ได้คนที่มีข้อความที่มีB
B
หวังว่านี่จะช่วยได้
สำหรับ jQuery รุ่นล่าสุดข้างต้นใช้งานไม่ได้ ตามที่แสดงความคิดเห็นโดยQuandaryด้านล่างนี่คือสิ่งที่ใช้ได้กับ jQuery 1.9.1:
$('#test option').filter(function () { return $(this).html() == "B"; }).val();
คุณสามารถใช้:contains()
ตัวเลือกเพื่อเลือกองค์ประกอบที่มีข้อความเฉพาะ
ตัวอย่างเช่น:
$('#mySelect option:contains(abc)')
ในการตรวจสอบว่า<select>
องค์ประกอบที่กำหนดมีตัวเลือกดังกล่าวหรือไม่ให้ใช้.has()
วิธีการ :
if (mySelect.has('option:contains(abc)').length)
ในการค้นหาทั้งหมด<select>
ที่มีตัวเลือกดังกล่าวให้ใช้:has()
ตัวเลือก :
$('select:has(option:contains(abc))')
:contains
ตอนนี้ยังไม่ชัดเจนใช่ไหม
123abcdef
หรือไม่
ข้อเสนอแนะก่อนหน้านี้ไม่เหมาะกับฉันใน jQuery 1.7.2 เพราะฉันกำลังพยายามตั้งค่าดัชนีที่เลือกของรายการตามค่าจากกล่องข้อความและค่าข้อความบางอย่างมีอยู่ในหลายตัวเลือก ฉันลงเอยด้วยการใช้สิ่งต่อไปนี้:
$('#mySelect option:contains(' + value + ')').each(function(){
if ($(this).text() == value) {
$(this).attr('selected', 'selected');
return false;
}
return true;
});
contains
จะคิดว่าการข้ามไปโดยสิ้นเชิงอาจทำให้ทุกอย่างเร็วขึ้น
$(this).parent().val($(this).val());
คุณอาจทำทั้งสองอย่าง แต่สำหรับฉันการตั้งค่าเฉพาะผู้ปกครองval()
ทำเคล็ดลับ
ฉันประสบปัญหาเดียวกันด้านล่างคือรหัสการทำงาน:
$("#test option").filter(function() {
return $(this).text() =='Ford';
}).prop("selected", true);
การสาธิต: http://jsfiddle.net/YRBrp/83/
สิ่งนี้ใช้ได้กับฉัน: $("#test").find("option:contains('abc')");
$("#testselect").find("option:contains('option-text')").attr('value');
ด้วยวิธีนี้คุณสามารถใช้กิจกรรมเช่น.click()
เปลี่ยนการตั้งค่า
นี่เป็นวิธีที่ดีที่สุดสำหรับเลือกข้อความในรายการแบบเลื่อนลง
$("#dropdownid option:contains(your selected text)").attr('selected', true);
this is your selected text plus more
เช่นเดียวกับคำตอบที่คล้ายกันนี้จะได้พบกับตัวเลือกที่มี
ฉันลองบางสิ่งเหล่านี้จนกว่าฉันจะได้ทำงานในทั้ง Firefox และ IE นี่คือสิ่งที่ฉันมาด้วย
$("#my-Select").val($("#my-Select" + " option").filter(function() { return this.text == myText }).val());
อีกวิธีในการเขียนมันในแฟชั่นที่อ่านง่ายขึ้น:
var valofText = $("#my-Select" + " option").filter(function() {
return this.text == myText
}).val();
$(ElementID).val(valofText);
pseudocode:
$("#my-Select").val( getValOfText( myText ) );
"#my-Select" + " option"
คืออะไร ทำไมไม่เพียง"#my-Select option"
?
ใช้ดังต่อไปนี้
$('#select option:contains(ABC)').val();
สิ่งนี้จะทำงานใน jQuery 1.6 (โคลอนบันทึกย่อก่อนวงเล็บเปิด) แต่ไม่สำเร็จในรุ่นที่ใหม่กว่า (1.10 ในเวลานั้น)
$('#mySelect option:[text=abc]")
$("#mySelect option").filter(function() { return this.text == "abc"; });
จะทำงานร่วมกับ jQuery รุ่นล่าสุด .. หรืออาจเป็นวิธีอื่นที่คุณต้องการใช้ ..
สำหรับ jquery เวอร์ชั่น 1.10.2 ด้านล่างใช้งานได้สำหรับฉัน
var selectedText="YourMatchText";
$('#YourDropdownId option').map(function () {
if ($(this).text() == selectedText) return this;
}).attr('selected', 'selected');
});
งานนี้สำหรับฉัน
$('#mySelect option:contains(' + value + ')').attr('selected', 'selected');
สิ่งนี้ใช้ได้กับฉัน:
var result = $('#SubjectID option')
.filter(function ()
{ return $(this).html() == "English"; }).val();
result
ตัวแปรจะกลับดัชนีของค่าข้อความที่ตรงกับที่ ตอนนี้ฉันเพิ่งจะตั้งมันโดยใช้ดัชนี:
$('#SubjectID').val(result);
ไม่ว่าคุณจะวนซ้ำตัวเลือกหรือใส่ข้อความเดียวกันภายในแอตทริบิวต์อื่นของตัวเลือกแล้วเลือกด้วยตัวเลือกนั้น
สิ่งนี้จะได้ผล
$ ('# test'). find ("ตัวเลือกเลือก: มี ('B')"). ตัวกรอง (": เลือก");
ABC
นอกจากนี้ยังจะคว้าตัวเลือก
ตามที่อธิบายไว้ในคำตอบนี้คุณสามารถสร้างตัวเลือกของคุณเองสำหรับ hasText สิ่งนี้ช่วยให้คุณค้นหาตัวเลือกด้วย$('#test').find('option:hastText("B")').val();
นี่คือวิธีการ hasText ที่ฉันเพิ่ม:
if( ! $.expr[':']['hasText'] ) {
$.expr[':']['hasText'] = function( node, index, props ) {
var retVal = false;
// Verify single text child node with matching text
if( node.nodeType == 1 && node.childNodes.length == 1 ) {
var childNode = node.childNodes[0];
retVal = childNode.nodeType == 3 && childNode.nodeValue === props[3];
}
return retVal;
};
}
มันใช้งานได้สำหรับฉัน
var options = $(dropdown).find('option');
var targetOption = $(options).filter(
function () { return $(this).html() == value; });
console.log($(targetOption).val());
ขอบคุณสำหรับการโพสต์ทั้งหมด
has
คำตอบใน SLaks มีประโยชน์ แต่ประเด็นในคำตอบของ Floyds ก็ดีเช่นกัน ... ฉันไม่รู้ว่าจะยอมรับอะไร