<select id="select">
<option value="1">1adsd</option>
<option value="2">2adsd</option>
<option value="3">3adsd</option>
<option value="4">4adsd</option>
<option value="5">5adsd</option>
</select>
var parray = ['2', '5'];
$("#select").live('change', function(){
if($.inArray($(this).val(), parray)){
console.log('yes');
console.log($(this).val());
console.log(parray);
} else {
console.log('no');
console.log($(this).val());
console.log(parray);
}
})
为什么这不能正常工作?
如果我选择值1,则显示'是',但“1”不在parray中。
如果我选择值2,这表明我'不',但是“2”正在等待。
如果我选择值5,这表明我'是' - 只有这样就可以了。为什么呢?
LIVE:
答案 0 :(得分:5)
正如the manual明确指出:
$。如果找不到元素,则inArray返回-1,否则返回找到元素的索引(从0开始)。
if($.inArray($(this).val(), parray) >= 0) {
答案 1 :(得分:3)
inArray在找不到元素时返回-1,否则返回找到元素的索引。
var parray = ['2', '5'];
$("#select").live('change', function(){
if($.inArray($(this).val(), parray) >= 0){
console.log('yes');
console.log($(this).val());
console.log(parray);
} else {
console.log('no');
console.log($(this).val());
console.log(parray);
}
})
答案 2 :(得分:1)
$。inArray返回项目的位置,而不是布尔值
$(function() {
var parray = ['2', '5'];
$("#select").on('change', function() {
var value = $(this).val()
var index = $.inArray(value, parray)
if (index >= 0) {
console.log('yes');
console.log($(this).val());
console.log(parray);
} else {
console.log('no');
console.log($(this).val());
console.log(parray);
}
})
});
答案 3 :(得分:1)
.inArray
返回匹配的索引或-1
不匹配。
所以你要么需要检查结果是否大于-1,要么冷却并且~
否定。
if(~$.inArray($(this).val(), parray) ) { }
该按位运算符实际上会将-1
转换为0
,将任何其他正匹配转换为其负对应(减1)。如果没有用ECMAscript中的truthy和falsy值来详细描述这一点,这将完全符合您的要求。
答案 4 :(得分:1)
尝试
if($.inArray($(this).val(), parray)!=-1)
作为你的条件(加上!= - 1)。