jQuery-如何检测鼠标未结束#a和#b
Html代码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的“缓存”,最后需要检查两者是否都处于“退出”状态,然后运行淡出功能。一句警告的话,让用户在几毫秒内从一
<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
});