2013-03-20 57 views
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"); 
} 

而且,如果你能回答这个问题,请做到: 是不是始终专注?这意味着当没有特定的元素或没有特定的元素时,这个文档/主体是否被重点关注,直到代码或用户完成为止?

+0

@ultranaut谢谢你指出。那个问题有我正在寻找的答案。 – IMUXIxD 2013-03-20 16:25:50

回答

0

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

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

Fiddle: http://jsfiddle.net/xfwy2/

有很多方法可以存储所关注的元素,我只是选择了一个数组。另外,我不确定是否要跟踪每个元素都集中在一起,但是如果你这样做,只需沟通$.unique()即可查看完整列表。

0

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

只是把这个在一起,作为一个例子:http://jsfiddle.net/kZbYv/1/

0

您可以使用下列内容:

$('*:focus')