使用Jquery按值过滤选项

时间:2013-05-22 12:55:06

标签: jquery

我希望按值使用jquery筛选选项, 如果我有:

<select class="generic-widget" id="phone_line" name="phone_line">
<option value=""></option>
<option value="2">71158189</option>
<option value="4">71158222</option>
<option value="3">99199152</option>
<option value="1">98199153</option>
</select>

对于这种情况,我必须显示值为“3”和值=“4”的选项。

使用:

$('#phone_line option[value!="3"]').remove();

我只能过滤一个值,但我需要使用x值

我该怎么做? 感谢。

8 个答案:

答案 0 :(得分:5)

如果你要一遍又一遍地重复使用它,创建一个函数是个好主意。下面是您要删除的值的数组参数:

function removeOptions(array) {
    for (var i = 0; i < array.length; i++) {
        $('#phone_line option[value="' + array[i] + '"]').remove();
    }
}

快速演示:http://jsfiddle.net/tymeJV/Ca2hb/1/

答案 1 :(得分:3)

你需要这样的功能:

function removeOptions(id,array){
    str='[value!=""]';
    for(i=0;i<array.length;i++){
        str += '[value!='+array[i]+']';
    }
    $('#'+id+' option'+ str ).remove();
}

如果您的阵列中包含您不想删除的选项,请执行以下操作:

var myopts = [3,4];

你只运行:

removeOptions('phone_line', myopts);

干杯!

答案 2 :(得分:2)

首先,我不知道#line在哪里,但它不在您提供给我们的HTML中。

其次我会使用:

$('#phone_line option[value!=3][value!=5]').remove();

一个选择器中可以有2个条件!

答案 3 :(得分:1)

尝试

$("select[id*='line']").find('option[value!=3], option[value!=5]').remove();

or

$("select[id*='line']").children('option[value!=3], option[value!=5]').remove();

谢谢,

答案 4 :(得分:1)

$('#phone_line option').filter(function(){
    return (this.value != 3 && this.value != 4);
}).remove();

FIDDLE

答案 5 :(得分:1)

如果您只想显示值为3和4的选项。可以通过简单地完成。

$('#phone_line option').not('option[value="3"],option[value="4"]').remove();

这是demo

或者您可以使用filter来避免使用4和3

的选项值
$('#phone_line option').filter('option[value="3"],option[value="4"] ').remove();

这是demo

答案 6 :(得分:0)

试试这个

$('#line option[value!=3],option[value!=4]').remove();

答案 7 :(得分:0)

$('#line').find('option[value!=3], option[value!=5]').remove();

如果选项是直接后代,请使用 .children()而不是 .find()