2012-07-19 68 views
1

我有以下代码:JavaScript的jQuery的获取对象键

!function($){ 

    $.keys = { 
     backspace: 8, 
     tab: 9, 
     enter: 13, 
     escape: 27, 
     space: 32, 
     pageUp: 33, 
     pageDown: 34, 
     end: 35, 
     home: 36, 
     left: 37, 
     up: 38, 
     right: 39, 
     down: 40, 
     delete: 46, 
     numpadEnter: 108, 
     comma: 188 
    }; 

}(window.jQuery); 

我想建立一个返回键码,例如一个字符串的函数:

$.keys.toString = function(key){ 
    switch(key){ 
    case $.keys.backspace: 
     return 'backspace'; 
    } 
}; 

名单将ofcourse更大,并且支持$ .keys对象的所有键。但是有可能$ .keys.toString函数实际上使用$ .keys数组来将int转换为字符串,所以我不必做一个switch语句。

有点像getKeyFromObjectValue?

感谢您的帮助:)

回答

5

由于密钥列表是恒定的,你可以简单地创建通过迭代和扭转另一个列表:

$.keysReversed = {}; 
$.each($.keys, function(key, value) { 
    $.keysReversed[value] = key; // value as key, key as value 
}); 

现在,$.keysReversed包含数/名称对。这比每次拨打.toString时都会使用魔法要快 - 您只需返回$.keysReversed[key]即可。

1
$.keys.toString = function(key){ 
    $.each($.keys, function(key, value){ 
     if(value === key){ 
      return key; 
     } 
    }); 
}; 

感谢您的帮助:)

+0

在'$ .each'没有返回'toString'返回的东西。 – pimvdb 2012-07-20 15:17:48