Ich würde vorschlagen , dass Sie nicht die Lösungen verwenden , die eine Verwendung <span>Wrapper , weil es nicht gültige HTML ist, die Probleme auf dem Weg führen könnte. Ich denke, die bevorzugte Lösung besteht darin, alle Optionen, die Sie ausblenden möchten, tatsächlich zu entfernen und bei Bedarf wiederherzustellen. Mit jQuery benötigen Sie nur diese drei Funktionen:
Die erste Funktion speichert den ursprünglichen Inhalt der Auswahl . Aus Sicherheitsgründen können Sie diese Funktion beim Laden der Seite aufrufen.
function setOriginalSelect ($select) {
if ($select.data("originalHTML") == undefined) {
$select.data("originalHTML", $select.html());
} // If it's already there, don't re-set it
}
Diese nächste Funktion ruft die obige Funktion auf, um sicherzustellen, dass der ursprüngliche Inhalt gespeichert wurde, und entfernt dann einfach die Optionen aus dem DOM.
function removeOptions ($select, $options) {
setOriginalSelect($select);
$options.remove();
}
Die letzte Funktion kann immer dann verwendet werden, wenn Sie alle ursprünglichen Optionen "zurücksetzen" möchten.
function restoreOptions ($select) {
var ogHTML = $select.data("originalHTML");
if (ogHTML != undefined) {
$select.html(ogHTML);
}
}
Beachten Sie, dass alle diese Funktionen erwarten, dass Sie jQuery-Elemente übergeben. Beispielsweise:
// 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
Hier ist ein funktionierendes Beispiel: http://jsfiddle.net/9CYjy/23/