Sana do öneririz değil bir kullanmak çözümler kullanmak <span>
o yolda sorunlara neden olabilecek geçerli HTML, olmadığı için sarmalayıcı. Bence tercih edilen çözüm, gizlemek istediğiniz tüm seçenekleri gerçekten kaldırmak ve gerektiğinde geri yüklemek. JQuery'yi kullanarak yalnızca şu 3 işleve ihtiyacınız olacak:
İlk işlev orijinal içeriğini kurtaracak seçin . Sadece güvende olmak için, sayfayı yüklediğinizde bu işlevi çağırmak isteyebilirsiniz.
function setOriginalSelect ($select) {
if ($select.data("originalHTML") == undefined) {
$select.data("originalHTML", $select.html());
} // If it's already there, don't re-set it
}
Bu sonraki işlev, orijinal içeriğin kaydedildiğinden emin olmak için yukarıdaki işlevi çağırır ve ardından seçenekleri DOM'dan kaldırır.
function removeOptions ($select, $options) {
setOriginalSelect($select);
$options.remove();
}
Son işlev, tüm orijinal seçeneklere "sıfırlamak" istediğinizde kullanılabilir.
function restoreOptions ($select) {
var ogHTML = $select.data("originalHTML");
if (ogHTML != undefined) {
$select.html(ogHTML);
}
}
Tüm bu işlevlerin jQuery öğelerini iletmenizi beklediğini unutmayın. Örneğin:
// 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
İşte çalışan bir örnek: http://jsfiddle.net/9CYjy/23/