优化jQuery热键
Optimizing jQuery Hotkeys
我有一个web应用程序,它使用了从a到z的所有热键
每个热键用于一个选项卡。例如:
我有20个标签:
#tab1, #tab2, #tab3, #tab4
等。所有选项卡都有一个.tabs
类。
因此,为了使热键工作,我做了这个:
if (e.keyCode == 65) {$('.tabs:not(#tab1)').hide();$("#tab1").fadeIn();}
if (e.keyCode == 66) {$('.tabs:not(#tab2)').hide();$("#tab2").fadeIn();}
if (e.keyCode == 67) {$('.tabs:not(#tab3)').hide();$("#tab3").fadeIn();}
if (e.keyCode == 68) {$('.tabs:not(#tab4)').hide();$("#tab4").fadeIn();}
if (e.keyCode == 69) {$('.tabs:not(#tab5)').hide();$("#tab5").fadeIn();}
if (e.keyCode == 70) {$('.tabs:not(#tab6)').hide();$("#tab6").fadeIn();}
if (e.keyCode == 71) {$('.tabs:not(#tab7)').hide();$("#tab7").fadeIn();}
//etc till keycode 81 and tab20.
那么,是否有一个更好的优化方式,使它将写在更少的字符?因为在每一行我使用了两次相同的ID。
编辑/注:对不起,实际标签ID是随机名称。
谢谢
可能是这样的:
if(e.keyCode >= 65 && e.keyCode <= 81) {
var tab = e.keyCode - 65 + 1;
$('.tabs:not(#tab' + tab + ')').hide();
$('#tab' + tab).fadeIn();
}
我不知道keycode 81应该是tab20,那不是tab17吗?
更新:如果你的标签id
s可以是任何东西,那么就把它们扔到数组中:
var tab_ids = [ 'where', 'is', 'pancakes', 'house', ... ];
if(e.keyCode >= 65 && e.keyCode <= 81) {
var tab = tab_ids[e.keyCode - 65];
$('.tabs:not(#' + tab + ')').hide();
$('#' + tab).fadeIn();
}
如果键码中也有空格,则使用对象而不是数组:
var tab_ids = { 65: 'where', 70: 'is', 72: 'pancakes', 73: 'house', ... };
var tab = tab_ids[e.keyCode];
if(tab) {
$('.tabs:not(#' + tab + ')').hide();
$('#' + tab).fadeIn();
}
$('.tabs:not(#tab' + (e.keyCode - 64) + ')').hide();
$("#tab" + (e.keyCode - 64)).fadeIn();
用下面的代码替换所有的if语句
$('.tabs:not(#tab'+(e.keyCode-64)+')').hide();
$("#tab"+(e.keyCode-64)).fadeIn();
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用jquery在填充自动完成的值后使文本框只读
- jQuery:循环一个具有不同超时值的循环
- 用程序搜索JQuery数据表中的文本
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何实施“;热键”;使用jQuery
- jQuery热键插件不适用于单个字符(从a到z)
- 使用JavaScript/JQuery的HTML页面中的热键功能
- 有没有一个类似于Visual Studio的jquery IDE,我可以通过热键查看函数的定义
- 空格键的jquery热键
- 知道输入是否正在使用并禁用热键(Jquery)
- 这是可能的编写自己的热键内容可编辑的HTML Jquery
- 如何使用jQuery hotkey.js设置2个字母的热键组合
- 优化jQuery热键
- 在Chrome上使用Jquery禁用一个网站的默认热键
- jQuery热键插件提交表单不工作时,在一个输入
- 收听'anykey'使用js热键jQuery插件
- Jquery热键响应每个键
- 使用jQuery热键从一个模糊iFrame