我正在使用showTracker
和hideTracker
函数在hover
上滑入和滑出视图。我想阻止它滑出视图,如果它包含一个焦点形式元素,所以我有这个去:jQuery find(':focus')未按预期行事
function hideTracker(){
if($('#tracker').find(':focus').length == 0){
$('#tracker').stop().hide();
}
}
很酷。现在它不隐藏,如果鼠标碰巧移动了,如果有焦点的话。不幸的是,这也意味着当该领域失去焦点时(现在是小部件再次隐藏的时候),它只是停留在那里。 unHover事件已经消失。
所以我加了这一点:
$('#tracker *').blur(function(){
hideTracker();
});
这工程太 - 与一个小错误,我需要帮助!
如果焦点从跟踪器中的一个元素移动到另一个也在#tracker
内的元素,则跟踪器将隐藏。我认为if($('#tracker').find(':focus').length == 0)
将返回false,因为下一个表单元素有焦点,但我想它不会。
在下一个元素获得焦点之前,.blur()会触发吗?
我怎样才能解决这个问题?
为什么不只是将模糊添加到您的跟踪器div?你只想隐藏它,如果你从它的领域失去焦点,是吗? – corroded 2011-03-21 05:05:53
据我所知,当焦点离开其子输入时,模糊事件不会在div上触发。 – doctororange 2011-03-21 05:17:59
啊,我现在记得。无论如何,你也可以尝试检查你的输入是否在#tracker中。如果($(this).parents(“#tracker”).length)不隐藏,否则隐藏 – corroded 2011-03-21 05:24:18