6

我想用 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>

对于这种情况,我必须仅显示 value="3" 和 value="4" 的选项。

使用:

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

我只能按一个值过滤,但我需要一些与 x 值一起使用的东西

我怎样才能做到这一点?谢谢。

4

8 回答 8

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/

于 2013-05-22T13:02:10.410 回答
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);

干杯!

于 2013-05-22T15:42:39.263 回答
3

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

其次我会使用:

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

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

于 2013-05-22T13:01:24.090 回答
1

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

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

这是一个演示

或者您可以使用filter4 和 3 来避免选项值

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

这是一个演示

于 2013-05-22T13:07:58.303 回答
1

尝试

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

or

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

谢谢,

于 2013-05-22T13:01:17.473 回答
1
$('#phone_line option').filter(function(){
    return (this.value != 3 && this.value != 4);
}).remove();

小提琴

于 2013-05-22T13:01:51.083 回答
0
$('#line').find('option[value!=3], option[value!=5]').remove();

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

于 2013-05-22T12:59:29.593 回答
0

尝试这个

$('#line option[value!=3],option[value!=4]').remove();
于 2013-05-22T12:56:09.703 回答