如何在jQuery中使用inArray?

时间:2012-03-27 22:27:27

标签: javascript jquery html

<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:

http://jsfiddle.net/G5D2V/

5 个答案:

答案 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);
        }
    })

Updated Demo

答案 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)。