我的下拉列表中有以下代码:
<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();
请帮帮我。提前谢谢。
答案 0 :(得分:3)
元素的文本不是属性,因此属性选择器在这种情况下不起作用,正如您所发现的那样。相反,您可以使用正则表达式和filter()
函数的组合来实现此目的:
$('#state_code option').filter(function() {
return /^translation missing:/i.test($(this).text());
}).hide();
我现在要隐藏翻译缺失:en.world.us 和武装部队
为此您可以使用&#39;或&#39;正则表达式中的字符:|
。由于两个return
语句导致逻辑流程存在缺陷,因此您尝试过的工作不会起作用。试试这个:
$('#state_code option').filter(function() {
return /^translation missing:|armed forces/i.test($(this).text());
}).hide();
答案 1 :(得分:1)
text
不是属性,HTMLOptionElement
对象具有text
属性。您可以使用filter
和String.prototype.indexOf
方法过滤匹配选项。
$('#state_code').children().filter(function() {
return this.text.indexOf(ab) === 0;
}).hide();