2013-05-22 12 views
6

chcę odfiltrować z jQuery opcje wartościami, Jeśli mam:opcje Filtrowanie według wartości z 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> 

W tym przypadku muszę pokazać opcje z value = "3" i value = "4 " tylko.

Zastosowanie:

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

mogę tylko filtrować według jednej wartości, ale muszę coś do korzystania z wartości x

W jaki sposób można to zrobić? Dzięki.

+0

Prosimy, krótko wyjaśnij swoje pytanie. Nie rozumiem, co próbujesz zrobić ... –

+0

Odpowiedź Karl-André Gagnon jest dobra: krótka i skuteczna! Możesz przetestować to z jsfiddle: http://jsfiddle.net/ –

Odpowiedz

3

Trzeba funkcję tak:

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

Jeśli masz tablicę z opcjami, które nie chcesz usunąć, na przykład:

var myopts = [3,4]; 

tylko uruchomić:

removeOptions('phone_line', myopts); 

Pozdrawiam!

0

spróbować tej

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

Jeśli opcje są bezpośrednimi potomkami wykorzystują .children() zamiast .find()

1

spróbować

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

or 

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

Dzięki,

+0

Przepraszam, co znaczy * = – Goku

+0

to wybierz element, zaznaczając ciąg "line" .podobny do zawiera – SivaRajini

2

Po pierwsze, nie wiem, gdzie jest #line, ale nie jest to w kodzie HTML, który nam podałeś.

drugie chciałbym używać:

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

Możliwe jest mieć 2 Stan jednego selektora!

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

FIDDLE

+0

Dzięki Palash Twoja odpowiedź była dla mnie lepsza – Goku

5

Jeśli masz zamiar zostać ponownie używając tego w kółko, tworząc funkcję jest dobrym pomysłem. Poniższy bierze parametr tablicę wartości, które chcesz usunąć:

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

Szybkie demo: http://jsfiddle.net/tymeJV/Ca2hb/1/

+0

przepraszam, jest już naprawiony – Goku

+0

Dzięki tymeJV .. – Goku

1

Jeśli chcesz wyświetlić tylko te opcje z wartości 3 i 4. Może to być po prostu wykonane poprzez .

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

Oto demo.

lub użyć filter unikania wartości opcji z 4 i 3

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

Oto demo.

Powiązane problemy