我正在尝试简单地确定数组中是否存在元素。我基本上希望了解另一个<select>
中的<optgroup>
<select>
控件中是否存在<select id="countries">
<option value=""></option>
<option value="US">United States</option>
<option value="IL">Israel</option>
<option value="CA">Canada</option>
</select>
<select id="territories">
<option value=""></option>
<optgroup label="USA">
<option value="CA">California</option>
</optgroup>
<optgroup label="CA">
<option value="ON">Ontario</option>
</optgroup>
</select>
控件中的所选国家/地区...想想国家和地区:
// build array of available territories for counties
var territoryCountries = [];
$("select#territory optgroup").each(function() {
territoryCountries[territoryCountries.length] = $(this).attr('label');
});
// on change
$("select#country").change(function() {
if (!$.inArray($(this).val(), territoryCountries)) {
console.log("Not found, disable the territory input.");
} else {
console.log("Found, disable all unrelated territories.");
}
});
jQuery的:
{{1}}
我遇到的问题是它无法正常工作。它表明'IL'确实存在于领土国家,当它没有,并且表明'USA'在领土国家中不存在,当它发生时。
我做错了什么?您可以在JSFiddle查看并运行代码。
答案 0 :(得分:2)
$.inArray
返回找到的项目的索引,如果找不到,则返回-1
。
因为您的测试如下所示:
if (!$.inArray($(this).val(), territoryCountries)) {
-1
结果(真实的)通过if()
测试。
相反,您应该测试=== -1
。
if ( $.inArray($(this).val(), territoryCountries) === -1 ) {