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