2012-02-20 37 views
2

我試圖檢測與jQuery的關鍵組合,我一直在研究最後的幾個小時,試圖找到一個可行的解決方案。似乎所有的一切都很好用ctrl鍵而不是mac上的命令鍵。這段代碼幾乎就是我想要的,但是我怎樣才能使它與命令一起工作呢?Cmd + B與jQuery組合鍵

$.ctrl = function(key, callback, args) { 
    var isCtrl = false; 
    $(document).keydown(function(e) { 
     if(!args) args=[]; // IE barks when args is null 

     if(e.ctrlKey) isCtrl = true; 
     if(e.keyCode == key.charCodeAt(0) && isCtrl) { 
      callback.apply(this, args); 
      return false; 
     } 
    }).keyup(function(e) { 
     if(e.ctrlKey) isCtrl = false; 
    }); 
}; 

回答

5

這應該工作:

$(document).keydown(function (e) { 
    if (!args) { args = []; } 
    if (e.which === 98 && (e.ctrlKey || e.metaKey)) { // Ctrl + b 
     callback.apply(this, args); 
     return false; 
    } 
}); 

爲什麼keyup事件?我可能是錯的,但我認爲修飾鍵在keyup()上不起作用,但它們在keydown()上。

+0

嗯,我收到錯誤「參數未定義」。任何想法? – Adam 2012-02-20 23:37:46

+0

哦,什麼是'args'?它應該是什麼?我只是修改了你的代碼的相關部分... – elclanrs 2012-02-20 23:44:46

+0

也爲什麼'$ .ctrl = function(key,callback,args)'? – elclanrs 2012-02-20 23:45:51