2015-01-10 70 views
6

以下考慮選擇jQuery的過濾器選擇其中的選項包含一些字符串

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

如果我要過濾的選項,並刪除與價值BB-44行我能做到這一點是:

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

如果我想刪除其值開始AA?我可以這樣做,每個如下:

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

但我可以做到這一點與過濾器(在一行?!)。代碼在:

http://jsfiddle.net/mpp4emd1/

回答

7

使用屬性starts with選擇會做

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

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

DEMO

對於更復雜的過濾使用filter(function)

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

感謝與子字符串過濾器可以做更復雜的價值選擇。 –

+0

是的。還有其他的屬性選擇器,但絕對控制這是最好的 – charlietfl

5

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

2

做試試這個:

$('#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"]')這將返回一個集合,你不需要有.filter()刪除星號的選項ts /包含值AA

2

我覺得這個做的伎倆:

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

Fiddle

相關問題