2012-04-09 83 views
0

我需要隐藏链接的鼠标移开提示,但如果鼠标悬停在工具提示(双方有不同的父母) 例如:我们可以看到它在Facebook上时,悬停在名字或头像朋友如何在两个元素上检查鼠标悬停?

我这一点,但每次尝试我得到FALSE

$('a').bind('mouseleave', function() { 
     var i = $('div.tooltip').is('hover'); 
     if(i===true){ 
     console.log('cursor over the tooltip, so dont hide'); 
     } 
     else{ 
     console.log('hide tooltip'); 
     } 
}); 

我如何检查两种情况?

+1

您必须使用':hover'选择器而不是'hover'(带分号)。也可以尝试使用事件对象的event.relativeTarget属性 – user907860 2012-04-09 15:38:01

+0

请检查这一点,http://jqapi.com/#p=hover – Dhiraj 2012-04-09 15:40:49

回答

1

把两者的联系,并在同父的工具提示:

<div id="parent"> 
    <a href="link.com">link</a> 
    <div id="tooltip">tooltip</div> 
</div> 

然后在脚本中你可以把父的鼠标离开功能:

$("#parent a").mouseenter(function(){ 
    $("#tooltip").css("display","block"); //or however you handle this 
}); 
$("#parent").mouseleave(function(){ 
    $("#tooltip").css("display","none"); 
}); 
+0

这太容易了)我只是不能。我有太多的链接和工具提示只有一个div,我加载所有链接的不同数据。 – Zhivago 2012-04-09 15:45:08

+0

是那个div总是一样的大小?你如何处理可见/不可见的工具提示? – 2012-04-09 15:47:06

+0

如果你不能改变这一点,我会建议看看下面的adeneo的答案 – 2012-04-09 15:54:25

1

如果可以的话不会更改标记,使用定时事件并在鼠标输入任一元素时中止它,如下所示:

var timer; 

$("a, .tooltip").mouseleave(function() { 
    timer = setTimeout(doSomething, 10); 
}).mouseenter(function() { 
    clearTimeout(timer); 
}); 

function doSomething() { 
    console.log('hide tooltip'); 
} 

Here's a FIDDLE

相关问题