jQuery-如何检测鼠标未结束#a和#b

jQuery-如何检测鼠标未结束#a和#b,jquery,Jquery,Html代码 <div id="a"></div> <div id="b"></div> <div id="box"></div> 像这样: $("#a, #b").mouseout(function () { $("#box").fadeOut(800); }); 您可以在这里查看 您需要保留鼠标处于a还是B的“缓存”,最后需要检查两者是否都处于“退出”状态,然后运行淡出功能。一句警告的话,让用户在几毫秒内从一

Html代码

<div id="a"></div>
<div id="b"></div>
<div id="box"></div>
像这样:

$("#a, #b").mouseout(function () {
   $("#box").fadeOut(800);

});
您可以在这里查看

您需要保留鼠标处于a还是B的“缓存”,最后需要检查两者是否都处于“退出”状态,然后运行
淡出功能。一句警告的话,让用户在几毫秒内从一个过渡到下一个,否则你会发现它没有按预期工作

这段代码应该可以做到这一点,这里有一个实例:


将它们包装在父div中,并将代码中的#a替换为#parent div:

<div id="parent-div">
    <div id="a"></div>
    <div id="b"></div>
</div>
<div id="box"></div>


$("#parent-div").mouseleave(function () {
    $("#box").fadeOut(800));
});

$(“#父div”).mouseleave(函数(){
美元(“#盒”)。淡出(800);
});

否则,如果需要将div分开,缓存解决方案应该可以工作。

只有在
mouseover
mousein
事件之后才会触发
mouseleave
mouseout
事件,这实际上意味着为了检测光标是否使用这些事件悬停在元素上,您必须首先将其悬停,以便触发事件。
正确的方法是将事件处理程序绑定到文档中的所有鼠标移动,并检查事件的目标:

var elements = $('#a, #b');
$(document).mousemove(function(e){
    if(elements.get().indexOf(e.target) != -1)
        // you're over a or b
});
通过这种方式,您不必将元素悬停在第一位就可以触发
mouseout
mouseleave
事件。
这里有一个现场演示:


以防您正在寻找一个简单的if语句

if ( !$("#a, #b").is(":hover") ) {
    // not on it!
}
当然,您仍然需要将其绑定到某种事件,如果您决定执行以下操作:

$(document).click(function(){
    //the snippet from above
});

你希望运行哪一个功能?我希望$$(“ya a &&b”)。MouSeleWAVE(函数){…WOO!非常好,我从来没有考虑过JQuery上的“缓存”,非常感谢Jamiec!最好的答案,简单而有效!
var elements = $('#a, #b');
$(document).mousemove(function(e){
    if(elements.get().indexOf(e.target) != -1)
        // you're over a or b
});
if ( !$("#a, #b").is(":hover") ) {
    // not on it!
}
$(document).click(function(){
    //the snippet from above
});