2015-01-10 9 views
6

consideri sotto selezionarefiltro jquery un prescelto che le sue opzioni contiene una stringa

<select id="phone_line" name="phone_line"> 
    <option value=""></option> 
    <option value="BB-11">Line 1</option> 
    <option value="AA-22">Line 2</option> 
    <option value="AA-33">Line 3</option> 
    <option value="BB-44">Line 4</option> 
</select> 

Se voglio filtrare le opzioni e rimuovere linea con il valore BB-44 posso farlo come:

$('#phone_line option').filter(' option[value="BB-44"] ').remove(); 

Se Voglio rimuovere le linee che i loro valori iniziano con AA? Posso farlo con ciascuno come di seguito:

$("#phone_line > option").each(function() {  
    if (this.value.substring(0, 2) === 'AA') { 
     $("#phone_line option[value='" + this.value +"']").remove(); 
    } 
}); 

Ma posso farlo con filtri (in una riga?!). Codice A:

http://jsfiddle.net/mpp4emd1/

risposta

7

Uso attributo starts with selettore farà

$('#phone_line option[value^="AA"]').remove(); 

Riferimento: Attribute Starts With Selector [name^="value"]

DEMO

Per il filtraggio più complesso utilizzare filter(function)

$("#phone_line > option").filter(function() {  
    return this.value.substring(0, 2) === 'AA'; 
}).remove(); 
+0

Grazie al filtro con sottostringa può fare di più per la selezione valore complesso. –

+0

Sì sicuramente. Ci sono altri selettori di attributi ma per un controllo assoluto questo è il migliore – charlietfl

5

È possibile farlo con $("#phone_line option").filter('[value^="AA"]').remove();

2

Prova questo:

$('#phone_line').find('option[value^="AA"]').remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="phone_line" name="phone_line"> 
 
    <option value="">select phone line...</option> 
 
    <option value="BB-11">Line 1</option> 
 
    <option value="AA-22">Line 2</option> 
 
    <option value="AA-33">Line 3</option> 
 
    <option value="BB-44">Line 4</option> 
 
</select>

$('#phone_line').find('option[value^="AA"]') questo restituisce un insieme e non è necessario per avere .filter() per rimuovere le opzioni quali stelle ts/contiene il valore AA.

2

Penso che questo fa il trucco:

$('#phone_line option').filter(' option[value^="AA"] ').remove(); 

Fiddle

Problemi correlati