我正在使用委托来监听输入字段上的按键事件。出于某种原因,Firefox在字段开头时不会触发光标UP的委托事件,或者在结束时触发光标DOWN。 LEFT和RIGHT一直按预期工作。
直接将事件监听器绑定到该字段工作正常,因此必须与委托有关。有谁知道这是一个知道问题,我在谷歌/论坛等上找不到任何东西..?
$("div").delegate(":input", "keypress", function(e){
// doesn't get triggered
});
$("div :input").bind("keypress", function(e){
// gets triggered fine
});
这是一个演示问题的演示 - http://livsey.org/jquery.delegation.html
答案 0 :(得分:0)
这些密钥在Firefox中不会出现气泡,至少在这种情况下不会出现,因此.delegate()
或.live()
将无效。这是一个已知问题,在这种情况下最好使用不同的事件,例如keydown
或keyup
,您可以看到jQuery documentation for .keypress()
以便快速了解此事:
请注意,keydown和keyup提供一个代码,指示按下哪个键,而keypress指示输入了哪个字符。例如,小写的“a”将通过keydown和keyup报告为65,但按keypress报告为97。所有事件都将大写的“A”报告为65。由于这种区别,当捕获特殊键击如箭头键时,.keydown()或.keyup()是更好的选择。
将代码更新为:
$("div")().delegate(":input", "keyup", function(e){
log("delegated: "+e.keyCode);
});
$("div :input").bind("keyup", function(e){
log("bound: "+e.keyCode);
});