Tôi khuyên bạn không nên sử dụng các giải pháp sử dụng <span>
trình bao bọc vì nó không phải là HTML hợp lệ, điều này có thể gây ra sự cố. Tôi nghĩ rằng giải pháp ưa thích là thực sự loại bỏ bất kỳ tùy chọn nào bạn muốn ẩn và khôi phục chúng nếu cần. Sử dụng jQuery, bạn sẽ chỉ cần 3 chức năng sau:
Chức năng đầu tiên sẽ lưu nội dung ban đầu của vùng chọn . Để an toàn, bạn có thể muốn gọi hàm này khi tải trang.
function setOriginalSelect ($select) {
if ($select.data("originalHTML") == undefined) {
$select.data("originalHTML", $select.html());
} // If it's already there, don't re-set it
}
Hàm tiếp theo này gọi hàm trên để đảm bảo rằng nội dung gốc đã được lưu và sau đó chỉ cần xóa các tùy chọn khỏi DOM.
function removeOptions ($select, $options) {
setOriginalSelect($select);
$options.remove();
}
Chức năng cuối cùng có thể được sử dụng bất cứ khi nào bạn muốn "thiết lập lại" trở lại tất cả các tùy chọn ban đầu.
function restoreOptions ($select) {
var ogHTML = $select.data("originalHTML");
if (ogHTML != undefined) {
$select.html(ogHTML);
}
}
Lưu ý rằng tất cả các hàm này mong đợi rằng bạn đang truyền các phần tử jQuery. Ví dụ:
// 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
Đây là một ví dụ hoạt động: http://jsfiddle.net/9CYjy/23/