有効なHTMLではないため、ラッパーを使用するソリューションは使用しないことをお勧めします。これにより、<span>
将来問題が発生する可能性があります。私は、非表示にするオプションを実際に削除し、必要に応じて元に戻すことをお勧めします。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/