使用 .keydown() 到 return div id?

Using .keydown() to return div id?

我不太确定我的措辞是否正确,但我想做的是在 [=15] 上有一个函数 return div 的 id =] 事件.

假设我的 HTML 是:

<div class="pad" id="snare" data-key="97"></div>
<div class="pad" id="kick" data-key="98"></div>

基本上我希望我的 JS 做这样的事情:

function handlekeydown(e) {
    console.log("data-key: " + e.keyCode);
    if (e.keycode == $(".pad").data("key")) {
        return this.id
    }
}

我可以写一个 switch 语句,每个 keycode returning 一个与 id 同名的变量,但这会破坏将它放在我的 HTML.

我将如何编写一个函数来搜索 div 匹配 keycodedata-key 然后 return 它的 ID?

根据问题

How would I write a function to search a div for a data-key that would match the keycode?

您可以通过以下方式完成:

function handlekeydown(e) {
    var id;
    var element = $('[data-key="' + e.keyCode + '"]');
    if (element.length) {
        id = element[0].id;
    }
}

但是如上所述,您不能 return 来自处理程序的 id,您可能想从使用 id 的事件处理程序调用方法。

function processId(id) {
    console.log(id);
}

function handlekeydown(e) {
    var element = $('[data-key="' + e.keyCode + '"]');
    if (element.length) {
        processId(element[0].id);
    }
}

一个按键事件是一个键盘事件。

按键事件只会在文档的当前 activeElement 上触发。

你需要一种完全不同的方法——如果你决定用可能真正有效的方法来改变你当前的方法,我将提出一个解决方案建议。

p.s.: 我会更新同样的回复。