我正在制作一个使用hover
和showTracker
函数在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();
});