如何为jquery mouseover添加延迟?

Rol*_*ndo 18 javascript jquery

我在一个页面上有一堆图像,我使用以下内容来触发事件:

$('.img').on('mouseover', function() {
 //do something

});
Run Code Online (Sandbox Code Playgroud)

有没有办法添加一个延迟,如果用户徘徊可能1秒,那么它会"//做某事"或实际触发"鼠标悬停"事件?

Ano*_*oop 36

您可以使用 setTimeout

var delay=1000, setTimeoutConst;
$('.img').on('hover', function() {
  setTimeoutConst = setTimeout(function() {
    // do something
  }, delay);
}, function() {
  clearTimeout(setTimeoutConst);
});
Run Code Online (Sandbox Code Playgroud)

  • 这不会捕获意图.如果用户徘徊,然后将鼠标远离它,我希望它实际上不会执行setTimeout中的操作. (10认同)

xbo*_*nez 26

如果用户离开太快,您可以使用a setTimeout和a 一起执行此操作clearTimeout:

var timer;
var delay = 1000;

$('#element').hover(function() {
    // on mouse in, start a timeout

    timer = setTimeout(function() {
        // do your stuff here
    }, delay);
}, function() {
    // on mouse out, cancel the timer
    clearTimeout(timer);
});
Run Code Online (Sandbox Code Playgroud)


Mar*_*.io 5

使用计时器并在鼠标移出时清除它,以防它们在1000ms内离开

var timer;

$('.img').on({
    'mouseover': function () {
        timer = setTimeout(function () {
            // do stuff
        }, 1000);
    },
    'mouseout' : function () {
        clearTimeout(timer);
    }
});
Run Code Online (Sandbox Code Playgroud)