ผมขอแนะนำว่าคุณไม่ได้ใช้โซลูชั่นที่ใช้งาน<span>
กระดาษห่อเพราะมันไม่ได้ HTML ที่ถูกต้องซึ่งอาจก่อให้เกิดปัญหาลงที่ถนน ฉันคิดว่าวิธีแก้ปัญหาที่ต้องการคือการลบตัวเลือกใด ๆ ที่คุณต้องการซ่อนและเรียกคืนตามความจำเป็น เมื่อใช้ jQuery คุณจะต้องใช้ฟังก์ชัน 3 อย่างนี้เท่านั้น:
ฟังก์ชั่นแรกจะบันทึกเนื้อหาเดิมของการเลือก เพื่อความปลอดภัยคุณอาจต้องการเรียกใช้ฟังก์ชันนี้เมื่อคุณโหลดหน้าเว็บ
function setOriginalSelect ($select) {
if ($select.data("originalHTML") == undefined) {
$select.data("originalHTML", $select.html());
} // If it's already there, don't re-set it
}
ฟังก์ชันถัดไปนี้เรียกใช้ฟังก์ชันด้านบนเพื่อให้แน่ใจว่าเนื้อหาต้นฉบับได้รับการบันทึกแล้วจากนั้นก็ลบตัวเลือกออกจาก DOM
function removeOptions ($select, $options) {
setOriginalSelect($select);
$options.remove();
}
สามารถใช้ฟังก์ชันสุดท้ายได้ทุกเมื่อที่คุณต้องการ "รีเซ็ต" กลับไปเป็นตัวเลือกเดิมทั้งหมด
function restoreOptions ($select) {
var ogHTML = $select.data("originalHTML");
if (ogHTML != undefined) {
$select.html(ogHTML);
}
}
โปรดทราบว่าฟังก์ชันทั้งหมดเหล่านี้คาดว่าคุณจะส่งผ่านองค์ประกอบ jQuery ตัวอย่างเช่น:
// in your search function...
var $s = $('select.someClass');
var $optionsThatDontMatchYourSearch= $s.find('options.someOtherClass');
restoreOptions($s); // Make sure you're working with a full deck
removeOptions($s, $optionsThatDontMatchYourSearch); // remove options not needed
นี่คือตัวอย่างการทำงาน: http://jsfiddle.net/9CYjy/23/