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