Да Оператор с запятой имеет низкий приоритет, чем оператор присваивания
#include<stdio.h>
int main()
{
int i;
i = (1,2,3);
printf("i:%d\n",i);
return 0;
}
Выход: i = 3 Потому что оператор запятой всегда возвращает самое правое значение. В случае оператора запятой с Оператором присваивания:
int main()
{
int i;
i = 1,2,3;
printf("i:%d\n",i);
return 0;
}
Ouput: i = 1 Как известно, оператор с запятой имеет более низкий приоритет, чем присваивание .....
Вы можете использовать keyCode клавиш со стрелками (37, 38, 39 и 40 для влево, вверх, вправо и вниз):
$('.selector').keydown(function (e) {
var arrow = { left: 37, up: 38, right: 39, down: 40 };
switch (e.which) {
case arrow.left:
//..
break;
case arrow.up:
//..
break;
case arrow.right:
//..
break;
case arrow.down:
//..
break;
}
});
Посмотрите приведенный выше пример здесь .
$(document).keydown(function(e){
if (e.which == 37) {
alert("left pressed");
return false;
}
});
Коды символов:
37 - слева
38 - вверх
39 - справа
40 - вниз
Вы уверены, что jQuery.HotKeys не поддерживает клавиши со стрелками? Я раньше играл с их демонстрацией и наблюдал левую, правую, верхнюю и нижнюю работу, когда тестировал ее в IE7, Firefox 3.5.2 и Google Chrome 2.0.172 ...
РЕДАКТИРОВАТЬ : Это похоже, что jquery.hotkeys был перемещен в Github: https://github.com/jeresig/jquery.hotkeys
Это немного поздно, но у HotKeys есть очень серьезная ошибка, из-за которой события запускаются несколько раз, если вы прикрепляете более одной горячей клавиши к элементу. Просто используйте простой jQuery.
$(element).keydown(function(ev) {
if(ev.which == $.ui.keyCode.DOWN) {
// your code
ev.preventDefault();
}
});