jQuery.inArray()未按预期工作

jQuery.inArray()未按预期工作,jquery,Jquery,我做错了什么?我的想法是,我可以将箭头键按下与其他任何键分开,但每次按下都会触发警报“你按下了箭头键”。任何帮助都会很好 此处或: <input id='foo'> <script> $('#foo').keyup(function (e) { var key = e.keyCode; if ($.inArray(key, [37, 38, 39, 40])) { alert('you pressed an arrow key');

我做错了什么?我的想法是,我可以将箭头键按下与其他任何键分开,但每次按下都会触发警报“你按下了箭头键”。任何帮助都会很好

此处或:

<input id='foo'>

<script>

$('#foo').keyup(function (e) {
    var key = e.keyCode;
    if ($.inArray(key, [37, 38, 39, 40])) {
        alert('you pressed an arrow key');
    } else {
        alert("you didn't press an arrow key");
    }
});

</script>

$('#foo').keyup(函数(e){
var key=e.keyCode;
如果($.inArray(键[37,38,39,40])){
警报(“您按下了箭头键”);
}否则{
警报(“您没有按箭头键”);
}
});

您必须检查它是否返回索引>-1。如果数组中没有出现键,则索引为-1:

if ($.inArray(key, [37, 38, 39, 40]) >  -1)

jQuery inArray函数返回值的索引。对于左箭头键(37),它返回0,并被解释为false。您应该将代码更改为>=0

   if ($.inArray(key, [37, 38, 39, 40]) > -1) 

如果元素在数组中,$.inArray方法返回该元素的索引,如果元素不在数组中,则返回-1,因此不能将其用作if条件。将其更改为:

if($.inArray(key, [37, 38, 39, 40]) >= 0)) {

}

.inArray()
返回索引,而不是布尔值。请确保阅读Previor。可能的重复项是重复项,抱歉,但我想检查密钥是否在数组中。这是可能的,还是我只是颠倒了函数的逻辑?如果该函数返回的索引大于-1,则表示键在数组中。换句话说,如果上面的值在数组中,它将返回true。谢谢,我的错误是我认为它返回一个布尔值