2013-05-22 12 views
6

voglio filtrare con jQuery le opzioni di valori, se ho:opzioni di filtro per valore con 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> 

Per questo caso devo mostrare le opzioni con value = "3" e value = "4 " solo.

Usando:

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

posso solo filtrare per un valore, ma ho bisogno di qualcosa da usare con valori x

Come posso fare questo? Grazie.

+0

Gentilmente, spiega brevemente la tua domanda. Non ti capisco cosa stai cercando di fare ... –

+0

La risposta di Karl-André Gagnon è quella giusta: breve ed efficiente! Puoi testarlo con jsfiddle: http://jsfiddle.net/ –

risposta

3

È necessario una funzione come questa:

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

Se si dispone di un array con le opzioni che non si desidera rimuovere, in questo modo:

var myopts = [3,4]; 

si esegue solo:

removeOptions('phone_line', myopts); 

Cheers!

0

provare questo

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

Se le opzioni sono diretti discendenti usano .children() invece di .find()

1

provare

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

or 

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

Grazie,

+0

scusa, cosa significa * = – Goku

+0

seleziona l'elemento controllando la stringa "linea" .simile contiene – SivaRajini

2

Bene prima, non so dove sia #line ma non è nell'HTML che ci hai fornito.

In secondo luogo vorrei utilizzare:

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

E 'possibile avere 2 condizioni in un selettore!

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

FIDDLE

+0

Grazie Palash la tua risposta è stata la migliore per me – Goku

5

Se avete intenzione di essere ri-utilizzo di questo più e più volte, la creazione di una funzione è una buona idea. Il sotto prende un parametro di matrice di valori che si desidera rimuovere:

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

Un rapido demo: http://jsfiddle.net/tymeJV/Ca2hb/1/

+0

mi dispiace, è stato risolto ora – Goku

+0

Grazie a tymeJV .. – Goku

1

Se si desidera visualizzare solo le opzioni con i valori 3 e 4. Può essere fatto semplicemente tramite .

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

Ecco uno demo.

o È possibile utilizzare filter per evitare i valori di opzione con 4 e 3

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

Ecco un demo.

Problemi correlati