我可以在jQuery中合并这些吗?我正在使用HotKeys插件。
$(document).bind('keydown', 'n', cycleNoise);
$(document).bind('keydown', 's', pickRandom);
$(document).bind('keydown', 'v', toggleTasks);
$(document).bind('keydown', 't', toggleTimer);
$(document).bind('keydown', 'up', hideTask);
$(document).bind('keydown', 'down', nextTask);
$('#duration').bind('keydown', 't', toggleTimer);
$('#duration').bind('keydown', 'n', cycleNoise);
$('#duration').bind('keydown', 's', pickRandom);
$('#duration').bind('keydown', 'v', toggleTasks);
$('#duration').bind('keydown', 'up', hideTask);
$('#duration').bind('keydown', 'down', nextTask);
换句话说,是否可以在同一个选择器中使用document
和'#duration'
。以下似乎不起作用:
$(document + ',#duration').bind(...);
修改:
我正在使用jQuery HotKeys插件。这样可以防止文本字段冒泡。我可以通过修改源来禁用此功能仅针对此特定文本框吗?如果是这样,请告诉我如何。
插件也合并了keydown事件,还是真的附加了12个单独的处理程序?我不太了解jQuery以便解决它。实现所需效果的最佳解决方案是什么(作用于热键,除非在文本框中 - 除了应该绑定热键的'#duration'
之外)。
答案 0 :(得分:2)
这也应该有用,
var keys = {
'n': cycleNoise,
's': pickRandom,
....
..
..
}
$.each(keys, function(key, callback) {
$(document).add("#duration").bind('keydown', key, callback);
})
还要考虑ThiefMaster的回答。
答案 1 :(得分:1)
这应该有效:
$('body ,#duration').bind(...);
实际上,如果您绑定到文档,则无需绑定到任何其他内容。
正如其他人所指出的那样,你的keydown绑定语法也是错误的。
答案 2 :(得分:1)
由于事件冒泡,绑定到文档本身的事件处理程序将接收所有事件 - 因此您只需删除$('#duration')
事件。
您的处理程序将触发所有键btw,您不能限制它们 - 您需要检查使用e.which
按下了哪个键(假设处理程序函数的第一个参数名为{ {1}})在函数本身。