2015-01-10 10 views
6

Rozważmy poniżej wybierzfiltr jquery select, która jego opcje zawiera sznurek

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

jeśli chcę, aby filtrować opcje i usunąć wiersz z wartością BB-44 mogę zrobić jako:

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

Jeśli Chcę usunąć linie, które ich wartości zaczynają rozpoczyna z ? Mogę to zrobić z każdym z poniższych:

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

Ale czy mogę to zrobić z filtrami (w jednym wierszu?!). Kod w:

http://jsfiddle.net/mpp4emd1/

Odpowiedz

7

użyciu atrybutu starts with selektor to zrobi

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

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

DEMO

Dla bardziej złożonych filtrowania użyć filter(function)

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

Dzięki filtr z podsłowo może zrobić więcej dla doboru wartości złożonego. –

+0

Tak, zdecydowanie. Istnieją inne selektory atrybutów, ale dla pełnej kontroli jest to najlepsze – charlietfl

5

Można to zrobić z $("#phone_line option").filter('[value^="AA"]').remove();

2

Spróbuj tego:

$('#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"]') ten zwraca kolekcję i nie trzeba do mieć .filter(), aby usunąć opcje, które są oznaczone gwiazdką ts/zawiera wartość AA.

2

myślę, że to załatwia sprawę:

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

Fiddle

Powiązane problemy