我正在制作一个使用hovershowTracker函数在hideTracker上滑入和滑出视图的小部件。如果要包含聚焦的表单元素,我想防止它滑出视图,所以我要这样做:

function hideTracker(){
  if($('#tracker').find(':focus').length == 0){
    $('#tracker').stop().hide();
  }
}


凉。现在,如果焦点对准了一个字段,它不会隐藏鼠标是否会移出。不幸的是,这还意味着当该字段失去焦点时(该小部件再次隐藏的时间),它就停留在那里。取消悬停事件已经过去了。

所以我添加了这个:

$('#tracker *').blur(function(){
  hideTracker();
});


而且也可以使用-我需要帮助的一个小错误!

如果焦点从跟踪器中的一个元素移动到也在#tracker内的另一个元素,跟踪器将隐藏。考虑到下一个表单元素具有焦点,我认为if($('#tracker').find(':focus').length == 0)将返回false,但是我想没有。

是在下一个元素获得焦点之前触发.blur()的情况吗?

我该如何解决?

最佳答案

这样的事情怎么样?

$('body *').focus(function(){
    if(!$(this).is('#tracker *') && $('#tracker:visible').length != 0) hideTracker();
});

08-06 15:49