我有一个选择器,可以选择多个元素。我想检查这些元素中是否至少有一个具有焦点。
通过实验,我注意到.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
选择器对我有用。)
答案 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!');
}
});