1

我有以下代码:

!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';
  }
};

该列表当然会更大,并且支持 $.keys 对象的所有键。但是是否有可能 $.keys.toString 函数实际上使用 $.keys 数组将 int 转换为字符串,所以我不必进行 switch 语句。

getKeyFromObjectValue 之类的东西?

感谢帮助 :)

4

2 回答 2

5

由于键列表是恒定的,您可以通过迭代和反转来简单地创建另一个列表:

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

现在,$.keysReversed包含数字/名称对。这比每次打电话都变魔术要快.toString——你可以直接返回$.keysReversed[key]

于 2012-07-19T11:47:05.913 回答
1
$.keys.toString = function(key){
    $.each($.keys, function(key, value){
        if(value === key){
            return key;
        }
    });
};

感谢帮助 :)

于 2012-07-19T14:55:39.477 回答