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

Javascript 检查是否有任何元素具有焦点?,javascript,jquery,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( $('.

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

通过实验,我注意到
.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
选择器对我有效。)

正如你在这里看到的
是(“focus”)
是一条路要走。如果返回false,则表示它没有焦点

您还可以通过
$(document.activeElement)
获得聚焦元素


正如jquery文档中所述,它支持从版本1.6开始,我知道这很难实现,但可能您有一个较旧的版本。

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

$('.text-block').each(function() {
    if ($(this).is(':focus')) {
        console.log('This element has focus!');
    }
});
我用一些基本的HTML输入测试了这一点,它是有效的:(我使用的JSBin是有效的,但预览版似乎没有)


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

试试这个:

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

“至少有一个元素具有焦点”是什么意思?您一次只能关注文档中的一个元素,该元素是
document.activeElement
对不起,我的意思是,如果任何元素都有焦点,谢谢您何时检查这些输入是否有焦点?您是在使用
.focus()
还是在签入另一个函数?我想Elclars是在建议:
$('.text block').is(document.activeElement)
。根据我的日志,is(“:focus”)不起作用,请检查上面的代码,选择器:focus(不带is())起作用,尽管我看到了,因为$('.text block'))返回一个数组,我不确定它是如何工作的。全部检查,第一个只检查最后一个。您可以按每个循环,也可以只检查$('.text block:focus')。纵向上我可以使用$('.text block:focus')。但问题是,如果元素位于变量$textBlockElementsdid中,您可以尝试查找而不是筛选。如果它返回的对象意味着焦点元素实际上是$textBlockElements的子元素,如果这种情况非常合理的话。我测试了它,它似乎在JSBin编辑器中工作,但在预览/共享模式下不工作。您可能希望在您的开发环境中进行尝试。编辑:我刚刚在我的中尝试了它,它似乎起了作用,尽管当我聚焦到元素时,
focus
事件没有被触发,这很奇怪。