jquery过滤一个select,其选项包含一些字符串

时间:2015-01-10 14:49:02

标签: jquery jquery-selectors

请考虑以下选择

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

4 个答案:

答案 0 :(得分:11)

使用属性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();

答案 1 :(得分:5)

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

执行此操作

答案 2 :(得分: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()删除开始/包含值AA的选项。

答案 3 :(得分:2)

我认为这就是诀窍:

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

Fiddle