JS的clearartimeout即使在函数外部设置var也无法工作
JS clearTimeout fails to work even with var set outside the function
我试图得到一个预览显示在悬停,但如果我移动我的鼠标离开,我希望预览不显示。目前,如果我快速移动鼠标越过"。searchRecord"元素,无论如何它都会在300ms后显示,并且由于在setTimeout函数完成之前调用了鼠标关闭函数而被"卡住"。如果我让光标停留在元素上,直到预览显示,一切都正常。
我在函数外设置了变量,就像我在其他地方读的那样,但是,它不会重置。我有点难倒了。
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
中的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);
});
您在hover回调中再次使用var timer
,该回调将其范围扩展到该函数并遮蔽父timer
变量。
去掉内部的var
,一切都会好起来的。
相关文章:
- 在jquery函数内部设置来自jquery函数的var;t运行
- 无法获取php会话变量以在javascript中设置var
- javascript/jquery设置var未发生
- AngularJS:如何在设置了$scope.var之后才在视图中设置$scope.var
- Javascript requestData未定义,尽管为JSON设置了var
- 设置var-from这个的部分类名
- Jquery - 为什么我不能在 $.ajax 中访问/设置我的 var
- 使用 PHP var 和 AJAX 设置 JS var
- 不能用var设置边距:JavaScript,CSS和jQuery
- 将 var 设置为单击按钮值并使用 var
- Javascript正在将var设置为early
- 将ng模型var设置为取消angularjs中输入的值
- 使用Restangular并尝试从$scope中为一个var设置多个参数
- 将PHP var设置为javascript结果
- 如果jQuery对象为空,则在赋值时将var设置为null
- Javascript,如何将var设置为某个值,然后随机更改它
- 将var设置为等于函数返回的数据
- 如何使用.val()将var设置为true或false
- 将 var 设置为嵌套的 HTML 元素文本值
- 将var设置为.text()