请考虑以下选择
<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();
}
});
但我可以使用过滤器(一行吗?!)。代码:
答案 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)