我已经在SO上看到了其他类似的问题,但答案并不是我想要的。我在下面的代码中遇到的问题是变量隐藏。
目前的形式隐藏不会对第一个悬停功能可见,但我不想在更高的范围内声明它,因为它有那里没用另外,在更高的范围内声明它需要为每个li制作一个不同的变量。
保持此变量在这两个函数之间包含超时的解决方案是什么?
$('li').hover(function() {
clearTimeout(hide);
$('.menu', this).show();
}, function() {
var menu = $('.menu', this);
var hide = setTimeout(function() {
menu.hide();
}, 500);
});
答案 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));
});