检查是否有任何元素有焦点?

时间:2013-12-03 01:45:58

标签: javascript jquery

我有一个选择器,可以选择多个元素。我想检查这些元素中是否至少有一个具有焦点。

通过实验,我注意到.is(":focus").has(":focus")在处理多个元素时无效,请参阅下文:

console.log( $('.text-block').is(":focus") ); // prints false
console.log( $('.text-block').has(":focus") ); // prints empty object array
console.log( $('.text-block').filter(":focus") ); // prints empty object array
console.log( $('.text-block:focus') ); // prints one element (works!)

因为:focus选择器似乎是唯一的出路,我的问题是:如果我的元素($('.text-block'))在变量中(如$myElements)怎么办?

(第二个问题是理解为什么只有:focus选择器对我有用。)

3 个答案:

答案 0 :(得分:1)

遍历每个元素并测试是否有:focus

$('.text-block').each(function() {
    if ($(this).is(':focus')) {
        console.log('This element has focus!');
    }
});

我用一些基本的HTML输入测试了它并且它可以工作:http://jsbin.com/aTaqagOz/1/(我工作的JSBin正在工作,但预览似乎没有)

也许你的元素没有正确聚焦?

答案 1 :(得分:0)

你可以在这里阅读http://api.jquery.com/focus-selector/ is(":focus")是要走的路。如果它返回false,则意味着它没有焦点。

你也可以通过$( document.activeElement )获得他关注的元素。

正如它在jquery doc中所述,它支持从版本1.6开始,我知道这是一个很长的镜头,但可能你有一个旧版本。

答案 2 :(得分:0)

试试这个:

$('text').each(function() {
    if ($(this).is(':focus')) {
        console.log('This element has focus!');
    }
});