我正在尝试做类似的事情:
var keydownHandler = function (ev) {
alert(ev.data.test);
return false;
}
$(document).bind('keydown', {test: 'foo'}, keydownHandler);
但是 .bind 似乎不起作用,因为它返回 null 并且按下一个键不会触发处理程序。使用“click”eventType替换“keydown”,事件处理程序已正确注册并正常工作。
我当前的代码使用这样的匿名函数:
var config = ...;
$(document).bind('keydown', config.shortcut, function (e) {
config.click();
e.stopPropagation( );
e.preventDefault( );
}
return false;
} );
它工作正常,但我必须外化匿名函数,我不知道如何传递它所需的额外信息。
感谢您的帮助。
答案 0 :(得分:0)
您提供的第一个示例适用于我(如此处的小提琴所示:http://jsfiddle.net/YFBsE)。
如果要提取匿名函数(例如,重用它),并且需要将数据传递给不同用例和用例的函数,则应考虑使用如下所示的方法:
function buildHandler (data) {
return function (event) {
alert(data.test);
return false;
};
};
$(document).bind('keydown', buildHandler({ test: 'foo' }));
$(document).bind('click', buildHandler({ test: 'bar' }));
在此处查看此行动:http://jsfiddle.net/U8cvk/
答案 1 :(得分:0)
这是因为加载了hotkeys plugin,需要设置“combi”参数:
var keydownHandler = function (ev) {
alert(ev.data.test);
return false;
}
$(document).bind('keydown', {combi: 'x', test: 'foo'}, keydownHandler);