Я бы посоветовал вам не использовать решения, использующие <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/