2013-05-22 6 views
6

Я хочу фильтр с 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(); 

Я только можно фильтровать по одному значению, но мне нужно что-то использовать с й значением

Как я могу это сделать? Спасибо.

+0

Пожалуйста, объясните свой вопрос ненадолго. Я не понимаю, что вы пытаетесь сделать. –

+0

Ответ Карла-Андре Ганьона - хороший: короткий и эффективный! Вы можете протестировать его с помощью jsfiddle: http://jsfiddle.net/ –

ответ

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); 

Cheers!

0

попробовать этот

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

Если параметры являются прямыми потомками использовать .children() вместо .find()

1

попробовать

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

or 

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

Спасибо,

+0

Извините, что означает * = – Goku

+0

он выбирает элемент, проверяя строку «строка»., Аналогично содержащему – SivaRajini

2

Ну, во-первых, я не знаю, где #line, но это не в том HTML, который вы нам предоставили.

Во-вторых, я хотел бы использовать:

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

можно иметь 2 условия в одном селекторе!

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

FIDDLE

+0

Спасибо Дворец ваш ответ был лучше для меня – Goku

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/

+0

извините, теперь исправлено – Goku

+0

Спасибо tymeJV .. – Goku

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.

Смежные вопросы