jquery 过滤一个 select 其选项包含一些字符串
jquery filter a select which its options contains some string
考虑下面select
<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();
}
});
但是我可以用过滤器来做吗(在一行中?!)。代码在:
你可以用 $("#phone_line option").filter('[value^="AA"]').remove();
试试这个:
$('#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"]')
这是一个 returns 集合,您不需要 .filter()
删除 starts/contains 值 AA
的选项。
使用属性 starts with
选择器就可以了
$('#phone_line option[value^="AA"]').remove();
参考:Attribute Starts With Selector [name^="value"]
对于更复杂的过滤,请使用 filter(function)
$("#phone_line > option").filter(function () {
return this.value.substring(0, 2) === 'AA';
}).remove();
我认为这可以解决问题:
$('#phone_line option').filter(' option[value^="AA"] ').remove();
考虑下面select
<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();
}
});
但是我可以用过滤器来做吗(在一行中?!)。代码在:
你可以用 $("#phone_line option").filter('[value^="AA"]').remove();
试试这个:
$('#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"]')
这是一个 returns 集合,您不需要 .filter()
删除 starts/contains 值 AA
的选项。
使用属性 starts with
选择器就可以了
$('#phone_line option[value^="AA"]').remove();
参考:Attribute Starts With Selector [name^="value"]
对于更复杂的过滤,请使用 filter(function)
$("#phone_line > option").filter(function () {
return this.value.substring(0, 2) === 'AA';
}).remove();
我认为这可以解决问题:
$('#phone_line option').filter(' option[value^="AA"] ').remove();