嵌套'开'点击和按键功能不起作用?

问题描述:

element.on("click", function(){ 
    element[0].querySelector("input").focus() 
    element[0].querySelector("input").on('keypress',function(key){ 
     console.log(key) 
    } 
    }) 

这将返回该错误:嵌套'开'点击和按键功能不起作用?

Uncaught TypeError: undefined is not a function 
runner:18(anonymous function) 
runner:18(anonymous function) 
angular.js:2843forEach 
angular.js:325eventHandler 

而且JSBin

谢谢!

+0

它将注册以下按键的事件,否? – 2014-09-22 20:47:05

+2

通常如果出现错误,我们能够看到它会很棒;) – 2014-09-22 20:47:25

+0

您的发布示例中存在语法错误。你有没有检查控制台日志,以确保你已经修复了任何语法错误? – jwatts1980 2014-09-22 20:50:42

querySelector返回一个DOM对象。 .on函数是一个jQuery函数。你需要包装它:

$(element[0].querySelector("input")).on('keypress',function(key){ 
    console.log(key) 
} 

此外,我会厌倦在其他事件处理程序中添加事件处理程序。每当你点击这个元素时,keypress事件就会被添加。如果您单击该元素5次,则输入现在将有5个活动按键事件,除非您在某个时刻删除它。如果你意识到这些影响,你应该只做这件事 - 即使如此,它也可能使代码难以遵循。

+0

“另外,我会厌倦在其他事件处理程序中添加事件处理程序。”为什么? – 2014-09-22 21:00:48

+0

+1好,先生,做得好 – 2014-09-22 21:03:45

+0

@Ninsly我会将该信息添加到答案。 – jwatts1980 2014-09-22 21:04:29