问问题
561 次
2 回答
0
要选择未选择的选项,请使用:
$('option:not[selected]') or $('#myselect > option:not[selected]')
要删除它们,请使用:
$('option:not[selected]').remove();
在 css 中,:not
过滤器与弯曲括号中的内容相反。并且[]
是属性选择器。
所以:not[selected]
意味着: does not have an attribute whose key is "selected"
于 2013-06-18T15:49:52.547 回答
0
您拥有的解决方案不适用于选定的元素,因为他在开始时创建了一组选项,然后将这些选项与正则表达式匹配(不考虑实际选择的内容)。我过去曾使用跨度来隐藏选项,并创建了一个示例供您查看它是如何工作的。这是链接:http: //jsfiddle.net/rD6wv/
这是代码
$(function() {
$("#filterByText").bind('keyup',function(){
var search = $.trim($(this).val());
var regex = new RegExp(search,"gi");
$("#filez").find('option').each(function(){
if(!$(this).is(':selected')){
if($(this).val().match(regex) === null) {
$(this).wrap('<span>');
}else if($(this).parent().is('span')){
$(this).parent().replaceWith($(this));
}
}
});
});
});
当您在文本框中键入时,您只需要遍历选择的所有选项。然后检查它是否被选中,如果是,你什么都不做,否则检查它是否匹配搜索过滤器,如果匹配,你将它包装在一个跨度中,使其不可见,否则意味着你需要看到它,所以你检查它是否已经包含在跨度中,在这种情况下,您将其替换为选项,以便您再次看到它。
于 2013-06-18T15:58:23.773 回答