mat*_*att 4 javascript jquery switch-statement conditional-statements
我想知道这是不是......
inputs.keydown(function (e) {
switch (e.keyCode) {
case 13: //Enter
case 16: //Shift
case 17: //Ctrl
case 18: //Alt
case 19: //Pause/Break
case 20: //Caps Lock
case 27: //Escape
case 35: //End
case 36: //Home
case 37: //Left
case 38: //Up
case 39: //Right
case 40: //Down
// Mac CMD Key
case 91: //Safari, Chrome
case 93: //Safari, Chrome
case 224: //Firefox
break;
default:
$(this).addClass(fill);
break;
}
});
Run Code Online (Sandbox Code Playgroud)
...也可以用更少的线路?我知道我可以做一个if条件,但我想知道我是否错过了类似的东西case 13 && 16 && …
也许你们中的一些人知道更好的做法来检查所有案例并编写更少的代码行.我是在想.
先感谢您!
只需将代码放入一个数组中,然后您只需检查该值是否在数组中.由于您使用的是jQuery,因此您已经有了一种inArray()方法来执行此操作.
var keycodes = [13, 16, 17, 18, 19]; //and so on
//if the keycode is not found in the array, the result will be -1
if ($.inArray(e.keyCode, keycodes) === -1) {
$(this).addClass(fill);
}
Run Code Online (Sandbox Code Playgroud)
你可以创建一个你不想来处理按键"地图" -地图查询应该是介于两者之间O(1),并O(log n)取决于实施.
var specialKeys = {
13: 1, // Enter
16: 1, // Shift
...
224: 1 // Cmd/FF
};
inputs.keydown(function (e) {
if (e.keyCode in specialKeys) return;
$(this).addClass(fill);
});
Run Code Online (Sandbox Code Playgroud)
或者,因为您的"键"都是整数,您可以填充索引是键代码值的数组.
编辑删除了字符串,如@bažmegakapa所示