如何调用 onkeydown/onfocus 到列表标签?

Mat*_*ias 2 html javascript jquery

我有一个列表,在这个列表中我试图在 keyisdown/onfocus/etc 时调用一个函数?这不会触发该功能:

 <li onkeydown="myFunction()"></li>
Run Code Online (Sandbox Code Playgroud)

正常的 onclick 工作正常(在“点击上升”时调用该函数)并将触发该函数:

<li onclick="andrafarg()"></li>
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:当列表被立即点击时,我如何调用这个函数?

emp*_*ric 5

来自 jQuery 文档:

当用户第一次按下键盘上的一个键时,keydown 事件被发送到一个元素。它可以附加到任何元素,但事件只发送到具有焦点的元素。可聚焦元素可能因浏览器而异,但表单元素始终可以获得焦点,因此对于这种事件类型来说是合理的候选者。

因此,由于li元素无法获得焦点,因此keydown永远不会触发 -event。有关可聚焦元素的参考,您可能会查看答案。

但是由于event- bubbling ,如果 event-listener 在输入本身或父元素上注册,则input列表中的-field 将触发keydown-event。例子:

HTML

<ul>
    <li><input type="text" /></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

Javascript

$('ul > li').on('keydown', function(){
   alert('Event triggered'); 
});
Run Code Online (Sandbox Code Playgroud)

演示