如何通过它的文本值隐藏选项的选项?

时间:2015-04-29 08:56:40

标签: javascript jquery

我的下拉列表中有以下代码:

<select id="state_code" name="account[state_code]">
    <option value="">Select State</option>
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
    <option value="AZ">Arizona</option>
    <option value="AR">Arkansas</option>
    <option value="AE">Armed Forces</option>
    <option value="AA">Armed Forces</option>
    <option value="AP">Armed Forces</option>
    <option value="AS">translation missing: en.world.us.as.name</option>
    <option value="DC">translation missing: en.world.us.dc.name</option>
    <option value="GU">translation missing: en.world.us.gu.name</option>
    <option value="MP">translation missing: en.world.us.mp.name</option>
    <option value="PR">translation missing: en.world.us.pr.name</option>
    <option value="UM">translation missing: en.world.us.um.name</option>
    <option value="VI">translation missing: en.world.us.vi.name</option>
</select>

我希望隐藏其文字以translation missing: en.world.us开头的所有选项。我已经尝试了下面的内容,但它没有用。

var ab = "translation missing: en.world"
$('#state_code').find('option[text^="' + ab + '"]').hide();

请帮帮我。提前谢谢。

2 个答案:

答案 0 :(得分:3)

元素的文本不是属性,因此属性选择器在这种情况下不起作用,正如您所发现的那样。相反,您可以使用正则表达式和filter()函数的组合来实现此目的:

$('#state_code option').filter(function() {
    return /^translation missing:/i.test($(this).text());
}).hide();

Example fiddle

  

我现在要隐藏翻译缺失:en.world.us 武装部队

为此您可以使用&#39;或&#39;正则表达式中的字符:|。由于两个return语句导致逻辑流程存在缺陷,因此您尝试过的工作不会起作用。试试这个:

$('#state_code option').filter(function() {
    return /^translation missing:|armed forces/i.test($(this).text());
}).hide();

Example fiddle

答案 1 :(得分:1)

text不是属性,HTMLOptionElement对象具有text 属性。您可以使用filterString.prototype.indexOf方法过滤匹配选项。

$('#state_code').children().filter(function() {
    return this.text.indexOf(ab) === 0;
}).hide();