JQuery悬停功能超时

时间:2013-03-04 16:42:15

标签: javascript jquery hover settimeout

我已经在SO上看到了其他类似的问题,但答案并不是我想要的。我在下面的代码中遇到的问题是变量隐藏

目前的形式隐藏不会对第一个悬停功能可见,但我不想在更高的范围内声明它,因为它有那里没用另外,在更高的范围内声明它需要为每个li制作一个不同的变量。

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

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

1 个答案:

答案 0 :(得分:2)

您可以使用.data()

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