尽管clearTimeout,setTimeout仍会触发

时间:2016-02-10 11:53:23

标签: javascript jquery settimeout cleartimeout

我有以下功能。目的是当您将鼠标悬停在具有班级0x100001ea0 <+0>: pushq %rbp 0x100001ea1 <+1>: movq %rsp, %rbp 0x100001ea4 <+4>: pushq %r15 0x100001ea6 <+6>: pushq %r14 0x100001ea8 <+8>: pushq %r13 0x100001eaa <+10>: pushq %r12 0x100001eac <+12>: pushq %rbx 0x100001ead <+13>: movq %rdi, -0x30(%rbp) 0x100001eb1 <+17>: movq %rsi, -0x38(%rbp) 0x100001eb5 <+21>: movq %rdx, -0x40(%rbp) 0x100001eb9 <+25>: movq %rcx, -0x48(%rbp) 0x100001ebd <+29>: movq %r8, -0x50(%rbp) 的项目上时,它会记录您在3秒后悬停的元素中的.toolTip。但是,如果光标离开项目,它应该取消setTimeout而不显示消息。

&#34;超时设置&#34;和&#34;超时清除&#34;消息按预期触发,但命名函数仍会触发。我做错了什么?

data-tooltip

1 个答案:

答案 0 :(得分:2)

您的变量toolTipMessage仅存在于悬停时执行的函数的执行上下文中,当您下次悬停该元素时,该变量不再存在(或者更确切地说,您有不同的同名变量。)

要使变量在执行之间保持不变,您需要在封闭的执行上下文中定义该变量 - 例如在hover处理程序之外。

var toolTipMessage = null;
$(document).on("hover",".toolTip", function() {
   ....
});