Jquery 检查div是否有键盘焦点
我有一个div,在鼠标离开该区域5秒后自动隐藏。如果div中的任何元素具有键盘焦点,我希望防止这种隐藏,如果用户跳出,则重新启用。这是我的密码Jquery 检查div是否有键盘焦点,jquery,keyboard,focus,mouse,Jquery,Keyboard,Focus,Mouse,我有一个div,在鼠标离开该区域5秒后自动隐藏。如果div中的任何元素具有键盘焦点,我希望防止这种隐藏,如果用户跳出,则重新启用。这是我的密码 delayedRollUp = function() { if ( !$metaArea.hasClass('active') ) { var timeout = setTimeout(function(){ animateRollUp( $metaTab ); }, 5000 );
delayedRollUp = function() {
if ( !$metaArea.hasClass('active') ) {
var timeout = setTimeout(function(){
animateRollUp( $metaTab );
}, 5000 );
$metaArea.data('timeout', timeout);
}
};
// Make the meta boxes dissapear on mouse leave
$metaArea.mouseenter( function(){
clearTimeout($(this).data('timeout'));
}).mouseleave(function(){
delayedRollUp();
}).focusin( function(){
$metaArea.addClass('active');
}).focusout(function(){
$metaArea.removeClass('active');
});
我可以看出问题在于鼠标和键盘事件都没有考虑到彼此。我需要一个条件检查,比如hasMouseFocus
和hasKeyboardFocus
,这样我就可以防止调用setTimeout()
,但是我找不到任何像文档中那样的方法
更新代码以将活动类添加到$metaArea
。这在一定程度上是有效的,因为如果单击元素,它不会隐藏,但是元素之间的选项卡会导致超时被重置
如何解决此问题?您可以使用
:focus
选择器检查输入元素是否具有焦点
//返回当前集中在#容器中的元素数
(0或1)
$(“#容器输入:焦点”)。长度
参考文献
.focus()
事件的,而不是:focus
选择器。不幸的是谷歌去掉了前面的冒号,我找到了。问题是它不起作用,或者我用错了。通过向可单击选项卡添加一个类,解决了一半的问题。现在,我正试图找出一个隐藏的元素。