Javascript 延迟悬停时显示和隐藏内容

Javascript 延迟悬停时显示和隐藏内容,javascript,jquery,hover,Javascript,Jquery,Hover,我需要做一件事。 我在网站上有一个元素。当用户将鼠标悬停在该项目上时,例如,我需要显示警报。但延迟:当用户将鼠标悬停在项目上,一秒钟后鼠标仍在项目上时,将显示警报。我可以这样做,但当鼠标离开同一个项目时(当鼠标离开项目,一秒钟后仍然在项目之外时),我想做同样的事情。现在我使用这个代码,但它当然不适用于离开 $('.test').hover(function(){ mytimeout = setTimeout(function(){ alert("enter"); }, 1000)

我需要做一件事。 我在网站上有一个元素。当用户将鼠标悬停在该项目上时,例如,我需要显示警报。但延迟:当用户将鼠标悬停在项目上,一秒钟后鼠标仍在项目上时,将显示警报。我可以这样做,但当鼠标离开同一个项目时(当鼠标离开项目,一秒钟后仍然在项目之外时),我想做同样的事情。现在我使用这个代码,但它当然不适用于离开

$('.test').hover(function(){
  mytimeout = setTimeout(function(){
    alert("enter");
  }, 1000);
}, function(){
     clearTimeout(mytimeout);
});


$('.test').mouseleave(function() {
  alert("escape");
});
当然,我不会将其用于警报;) 我不知道怎么做。悬停在悬停中?还是用别的?
谢谢你的帮助,对不起我的英语。

你差一点就学会了。jquery hover函数接受两个参数:onHoverStart(或onMouseOver)处理程序和onHoverStop(或onMouseLeave)处理程序。您只需要将警报添加到onHoverStop处理程序中

$('#test').hover(function(){
  setTimeout(function(){
    alert("enter");
  }, 1000);
}, function(){
  setTimeout(function(){
    alert("escape");
  }, 1000);
});

在两个块中都需要超时,输入/离开,如下所示:

var$demo=$(“#demo”);
无功定时器;
$('.test').hover(函数(){
//清除超时,以防在悬停退出中指定的时间内再次悬停
清除超时(计时器);
计时器=设置超时(函数(){
$demo.text(“输入”);
}, 1000);
},函数(){
//清除悬停中设置的超时
清除超时(计时器);
计时器=设置超时(函数(){
$demo.text(“退出”);
}, 1000);
});

让我停下来!

如果需要,您可以在
mouseleave
中遵循相同的想法,只需在
悬停
事件上清除计时器
timer\u mouseleave

var timer_mouseleave;

$('.test').hover(function(){
      clearTimeout(timer_mouseleave);

      mytimeout = setTimeout(function(){
        alert("enter");
      }, 2000);
}, function(){
     clearTimeout(mytimeout);
});

$('.test').mouseleave(function() {
      timer_mouseleave = setTimeout(function(){
        alert("escape");
      }, 2000);
});

希望这有帮助。

试试这个。只需在每个悬停事件上重置超时

(function(){
        var mytimeout = null;
        $('.test').hover(function(){
            clearTimeout(mytimeout);
            mytimeout = setTimeout(function(){
                alert("enter");
            },1000);
        });
    })();

这正是我需要的。非常感谢。