Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Extends mousetrap.js to support passing a dictionary into bind method. Just include this js after you include mousetrap.
/**
* Overwrites default Mousetrap.bind method to optionally accept
* an object to bind multiple key events in a single call
*
* You can pass it in like:
*
* Mousetrap.bind({
* 'a': function() { console.log('a'); },
* 'b': function() { console.log('b'); }
* });
*
* And can optionally pass in 'keypress', 'keydown', or 'keyup'
* as a second argument
*/
Mousetrap = (function(Mousetrap) {
var self = Mousetrap,
_oldBind = self.bind,
args;
self.bind = function() {
args = arguments;
// normal call
if (typeof args[0] == 'string' || args[0] instanceof Array) {
return _oldBind(args[0], args[1], args[2]);
}
// object passed in
for (var key in args[0]) {
if (args[0].hasOwnProperty(key)) {
_oldBind(key, args[0][key], args[1]);
}
}
return self;
};
return self;
}) (Mousetrap);
Mousetrap=function(e){var t=e,n=t.bind,r;t.bind=function(){r=arguments;if(typeof r[0]=="string"||r[0]instanceof Array){return n(r[0],r[1],r[2])}for(var e in r[0]){if(r[0].hasOwnProperty(e)){n(e,r[0][e],r[1])}}return t};return t}(Mousetrap)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment