首页 > 解决方案 > 使用 .keydown() 返回 div id?

问题描述

我不确定我的措辞是否正确,但我想做的是让一个函数在事件div上返回 a 的 id 。keydown

假设我的 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返回一个与 id 同名的变量,但这会破坏将它包含在我的 HTML 中的目的。

我将如何编写一个函数来搜索匹配的diva然后返回它的 id?data-keykeycode

标签: javascriptjquerykeycode

解决方案


根据问题

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;
    }
}

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

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

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

推荐阅读