Saya menyarankan agar Anda tidak menggunakan solusi yang menggunakan <span>
pembungkus karena ini bukan HTML yang valid, yang dapat menyebabkan masalah di kemudian hari. Saya pikir solusi yang disukai adalah benar-benar menghapus opsi apa pun yang ingin Anda sembunyikan, dan memulihkannya sesuai kebutuhan. Menggunakan jQuery, Anda hanya membutuhkan 3 fungsi berikut:
Fungsi pertama akan menyimpan konten asli yang dipilih . Untuk amannya, Anda mungkin ingin memanggil fungsi ini saat Anda memuat halaman.
function setOriginalSelect ($select) {
if ($select.data("originalHTML") == undefined) {
$select.data("originalHTML", $select.html());
} // If it's already there, don't re-set it
}
Fungsi selanjutnya ini memanggil fungsi di atas untuk memastikan bahwa konten asli telah disimpan, dan kemudian menghapus opsi dari DOM.
function removeOptions ($select, $options) {
setOriginalSelect($select);
$options.remove();
}
Fungsi terakhir dapat digunakan kapan pun Anda ingin "mengatur ulang" kembali ke semua opsi awal.
function restoreOptions ($select) {
var ogHTML = $select.data("originalHTML");
if (ogHTML != undefined) {
$select.html(ogHTML);
}
}
Perhatikan bahwa semua fungsi ini mengharapkan Anda meneruskan elemen jQuery. Sebagai contoh:
// 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
Berikut adalah contoh yang berfungsi: http://jsfiddle.net/9CYjy/23/