JQuery Hover函数超时

JQuery Hover Function Timeout

本文关键字:超时 函数 Hover JQuery      更新时间:2023-09-26

我在SO上看到过其他类似的问题,但答案不是我想要的。我对下面代码的问题是关于变量hide

在它的当前形式隐藏将不可见的第一个悬停函数,但我不想在更高的范围内声明它,因为它没有使用那里。此外,在更高的作用域声明它需要为每个li创建不同的变量。

保持这个变量包含这两个函数之间的超时的解决方案是什么?

$('li').hover(function() {
    clearTimeout(hide);
    $('.menu', this).show();
}, function() {
    var menu = $('.menu', this);
    var hide = setTimeout(function() {
        menu.hide();
    }, 500);
});

可以将值存储在.data()

$('li').hover(function() {
    clearTimeout($(this).data('hide'));
    $('.menu', this).show();
}, function() {
    var menu = $('.menu', this);
    $(this).data('hide', setTimeout(function() {
        menu.hide();
    }, 500));
});