function createMyMouseDownHandler(stuffINeed) { // Notice that stuffINeed isn't passed into the event handler. It's captured in a closure: this is called currying. var somethingElseINeed = getSomethingElseFromStuff(stuffINeed); return function (evt) { doSomethingWithEventTargetAndStuffINeed(stuffINeed, somethingElseINeed, evt.target); }; } function bindMouseDownToMyItem () { var stuffINeedInAnEventHandler = foo; myItem.mousedown(createMyMouseDownHandler()); }