Javascript JS clearTimeout即使在函数外部设置了var也无法工作
我试图在悬停时显示预览,但如果我将鼠标移离,我希望预览不显示。目前,如果我在“.searchRecord”元素上快速移动鼠标,它将在300ms后显示,并且在setTimeout函数完成之前调用mouse off函数时被“卡住”。如果我让光标停留在元素上,直到预览显示一切正常 我在函数外部设置变量,就像我在别处读到的一样,但是,它不会重置。我有点不知所措Javascript JS clearTimeout即使在函数外部设置了var也无法工作,javascript,jquery,hover,settimeout,Javascript,Jquery,Hover,Settimeout,我试图在悬停时显示预览,但如果我将鼠标移离,我希望预览不显示。目前,如果我在“.searchRecord”元素上快速移动鼠标,它将在300ms后显示,并且在setTimeout函数完成之前调用mouse off函数时被“卡住”。如果我让光标停留在元素上,直到预览显示一切正常 我在函数外部设置变量,就像我在别处读到的一样,但是,它不会重置。我有点不知所措 var timer; $('.searchRecord').hover(function() { $(this).children('.
var timer;
$('.searchRecord').hover(function() {
$(this).children('.previewLoad').show();
var current = '#'+$(this).children('div').attr('id');
//slight delay before hover so they can select what they want
var timer = window.setTimeout(function(){
$(current).fadeIn('fast');
$(current).siblings('.previewLoad').hide();
}, 300);
}, function() {
window.clearTimeout(timer);
var current = '#'+$(this).children('div').attr('id');
previewTimeouter(current);
});
您正在悬停回调内部再次使用
var timer
,该回调将其范围限定到该函数,并对父timer
变量进行阴影处理
移除该内部
var
,一切都会好起来。您在悬停回调内部再次使用var timer
,它将其范围限定到该函数,并隐藏父timer
变量
移除内部的
var
,一切都会好起来。你有重复的计时器声明。在悬停回调中的var timer
中删除var
var timer;
$('.searchRecord').hover(function() {
$(this).children('.previewLoad').show();
var current = '#'+$(this).children('div').attr('id');
//slight delay before hover so they can select what they want
timer = window.setTimeout(function(){
$(current).fadeIn('fast');
$(current).siblings('.previewLoad').hide();
}, 300);
}, function() {
window.clearTimeout(timer);
var current = '#'+$(this).children('div').attr('id');
previewTimeouter(current);
});
您已经复制了计时器声明。在悬停回调中的
var timer
中删除var
var timer;
$('.searchRecord').hover(function() {
$(this).children('.previewLoad').show();
var current = '#'+$(this).children('div').attr('id');
//slight delay before hover so they can select what they want
timer = window.setTimeout(function(){
$(current).fadeIn('fast');
$(current).siblings('.previewLoad').hide();
}, 300);
}, function() {
window.clearTimeout(timer);
var current = '#'+$(this).children('div').attr('id');
previewTimeouter(current);
});
这不会解决您的问题,但可以考虑为jQuery使用一百万个工具提示插件中的一个,在那里您还可以设置延迟设置,而不必关心实现。这不会解决您的问题,但可以考虑为jQuery使用一百万个工具提示插件中的一个,在那里你可以设置你的延迟设置,你不必关心实现。就是这样。我关于堆栈溢出的第一个问题是完全失败。非常感谢你的帮助!就这样。我关于堆栈溢出的第一个问题是完全失败。非常感谢你的帮助!