2013-07-03 44 views
0

我发现过去询问过的所有其他人都被告知要使用:hover,但现在不存在了。有没有办法从.hover()中获得boolean?我目前使用.hover()检查鼠标是否在jQuery中的东西?

为了使div出现时,我mouseover一个按钮,然后消失,当我mouseout。但是,我想添加一个检查,以便div不会消失,除非鼠标不在按钮上并且鼠标不在div之外。

+0

':hover'存在,在CSS中,只要你正确地构建标记,你就可以在这里完成这个功能,而不需要任何javascript。 – adeneo

+0

等一下,什么?什么时候':hover'离开...? –

+0

我的错误 - 显然它没有。我指的是对这个问题的回复进行编辑,“这个':hover'选择器被jQuery 1.9.x中的.hover()方法删除了。” http://stackoverflow.com/questions/8981463/detect-if-hovering-over-element-with-jquery – user2223066

回答

3

这样的事情应该工作...

var $in_div = 0; 

$("div").mouseenter(function(){ 
    $in_div = 1; 
}).mouseleave(function(){ 
    $in_div = 0; 
}); 

$("button").mouseenter(function(){ 
    $("div").show(); 
}).mouseleave(function(){ 
    if ($in_div == 1) { $("div").hide() } 
}); 

这是我平时使用,由500ms的延迟隐藏的另一种方法,我们可以,如果用户中断,如果我们想(在这种情况下,离开按钮,但进入div)。

var $delay = 0; 
$("button").mouseenter(function(){ 
    clearTimeout($delay); // don't hide 
    $("div").show(); 
}).mouseleave(function(){ 
    $delay = setTimeout(function(){ $("div").hide() }, 500); 
}); 
$("div").mouseenter(function(){ 
    clearTimeout($delay); // don't hide 
}); 
相关问题