Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果将鼠标悬停在任一元素上,则使用JQuery_Javascript_Jquery_Html_Css_Fadein - Fatal编程技术网

Javascript 如果将鼠标悬停在任一元素上,则使用JQuery

Javascript 如果将鼠标悬停在任一元素上,则使用JQuery,javascript,jquery,html,css,fadein,Javascript,Jquery,Html,Css,Fadein,所以我有两个div。一个是“top”,一个是“menu”。在JQuery中将鼠标悬停在“top”上时,“menu”会淡入,如图所示: $(".top").mouseover(function(){ $(".menu").fadeIn(200); }); $(".top").mouseout(function(){ $(".menu").fadeOut(200); }); 但我想这样,如果我也在“菜单”上徘徊,“菜单”将保持淡入状态。如何执行此操作?添加一个变量,该变量可记住您

所以我有两个div。一个是“top”,一个是“menu”。在JQuery中将鼠标悬停在“top”上时,“menu”会淡入,如图所示:

$(".top").mouseover(function(){
    $(".menu").fadeIn(200);
});

$(".top").mouseout(function(){
    $(".menu").fadeOut(200);
});

但我想这样,如果我也在“菜单”上徘徊,“菜单”将保持淡入状态。如何执行此操作?

添加一个变量,该变量可记住您是否在菜单上悬停:

var isHoveringMenu;

$(".menu").mouseover(function(){
    isHoveringMenu = true;
});

$(".menu").mouseout(function(){
    isHoveringMenu = false;
    $(".menu").fadeOut(200); // you probably want this here
});

$(".top").mouseover(function(){
    $(".menu").fadeIn(200);
    isHoveringMenu = true; // not necessary, but sounds good
});

$(".top").mouseout(function(){
    if (!isHoveringMenu) {
        $(".menu").fadeOut(200);
    }
});

您可能需要对此稍作调整——最佳解决方案取决于两个div之间的空间关系,因此我们需要先查看布局。

我相信这会对您有所帮助。在隐藏菜单之前,它会等待半秒钟。如果此时用户将鼠标悬停在菜单上,则会取消隐藏操作

var timer;

$(".top").mouseover(function(){
    clearTimeout(timer);
    $(".menu").fadeIn(200);
});

$(".top, .menu").mouseout(function(){
    timer = setTimeout(function() {
        $(".menu").fadeOut(200);
    }, 500);
});

$(".menu").mouseover(function() {
    clearTimeout(timer);
});

此解决方案的问题在于,您假设mouseover事件将在mouseout事件触发“.top”之前触发“.menu”。以我的经验,这不是你可以依赖的。