español - jquery filtrar a seleccionar qué opciones contiene alguna cadena
jquery selector id contains (4)
Creo que esto hace el truco:
$(''#phone_line option'').filter('' option[value^="AA"] '').remove();
Considere a continuación seleccionar
<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>
Si quiero filtrar las opciones y eliminar la línea con el valor BB-44
, puedo hacerlo como:
$(''#phone_line option'').filter('' option[value="BB-44"] '').remove();
Si quiero eliminar líneas cuyos valores comienzan con AA
? Puedo hacerlo con cada uno de la siguiente manera:
$("#phone_line > option").each(function () {
if (this.value.substring(0, 2) === ''AA'') {
$("#phone_line option[value=''" + this.value +"'']").remove();
}
});
¿Pero puedo hacerlo con filtros (en una línea?!). Código en:
El uso del atributo starts with
selector lo hará
$(''#phone_line option[value^="AA"]'').remove();
Referencia: El atributo comienza con el selector [name ^ = "value"]
Para un filtrado más complejo use el filter(function)
$("#phone_line > option").filter(function () {
return this.value.substring(0, 2) === ''AA'';
}).remove();
Prueba esto:
$(''#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"]'')
esto devuelve una colección y no necesita tener .filter()
para eliminar las opciones que comienzan / contienen el valor AA
.
Puede hacerlo con $("#phone_line option").filter(''[value^="AA"]'').remove();