我有 2 个功能来显示和清除窗口。最初我用 jquery hover 命令将它们定义为内联,就像在中一样$('item').hover(function() {...}, function() {...});
,这非常有效。但是,如果我从这些函数调用中获取代码并将它们隔离以调用它$('item').hover(function1, function2);
,结果会有所不同。在前一种情况下,我得到了预期的行为。也就是说,在悬停时元素显示,如果鼠标离开悬停元素,则在超时后淡出。在第二个版本中,新元素会显示,在超时后淡出,并且不会在悬停时重新出现。
我假设它与我正在使用的超时有关,但我完全从原始函数中复制了这些函数,所以理论上它应该是相同的事情发生......或者我会天真地假设。要么是那个,要么我在某个地方打错了,我只是没有抓住。
完整代码和 html 的小提琴可在此处(工作版本)和此处(损坏版本)获得。
这是有效的代码:
$('#test').hide();
var timeout;
$('a').hover(function(){
$('#test').show();
clearTimeout(timeout);
}, function(){
timeout = setTimeout(function(){
$('#test').fadeOut('fast', function(){});
}, 1000);
});
这就是失败的原因:
$('#test').hide();
var timeout;
function clearWindow() {
timeout = setTimeout(function(){
$('#test').fadeOut('fast', function(){});
}, 1000);
}
function showWindow() {
$('#test').show();
clearTimeout(timeout);
}
$('a').hover(showWindow(), clearWindow());