0

我正在构建一个页面,其中包含可以聚焦的各种锚点和表单元素,我想知道如果某些东西被聚焦,我如何获得当前聚焦的元素。我认为在 jQuery 中做到这一点的一种方法是使用.is(:focus). 我正在寻找 jQuery 或 vanilla js 解决方案——只要是可行的。

这是我在伪代码中尝试做的事情:

if (something is focused){
    get the tag name of that which is currently focused and store that in a variable as a string.
}
else {
    alert("nothing is being focused on");
}

另外,如果你能回答这个问题,请做:某事不总是专注的吗?这意味着当没有特定元素或没有任何特定元素被关注时,文档/正文才是焦点,直到代码或用户这样做?

4

3 回答 3

0

假设你想用 jQuery 来做这件事,你正在寻找的是 jQuery.prop()方法。$(someElement).prop('tagName')将返回 的标签名称someElement

只是把它放在一起,例如:http: //jsfiddle.net/kZbYv/1/

于 2013-03-20T03:30:19.520 回答
0

您可以使用以下内容:

$('*:focus')
于 2013-03-20T03:39:04.607 回答
0

您可以设置您关心的元素列表,也可以focus使用通配符选择器:

$(function () {
    var focusedEls = [];
    $('*:visible').bind('focus', function (e) {
        focusedEls.push(e.target);
        console.log( $.unique(focusedEls) );
    });
});

小提琴:http://jsfiddle.net/xfwy2/

有很多方法可以存储被聚焦的元素,我只是选择了一个数组。此外,我不确定您是否要跟踪每个元素的聚焦时间,但如果您这样做,只需放弃$.unique()完整列表即可。

于 2013-03-20T03:39:36.043 回答