【问题标题】:ClearTimeout not finding variableClearTimeout 找不到变量
【发布时间】:2012-10-18 10:01:58
【问题描述】:

我正在使用 jquery 线索提示插件来显示详细的工具提示。我遇到了以下问题中描述的问题,并遵循了已接受答案的建议:

Close a cluetip when the mouse is off of the link

这是我正在使用的代码:

if (opts.mouseOutClose) {
    var closectip;
    $cluetip.hover(function() {
    clearTimeout(closectip);
    },
    function() {
    $closeLink.trigger('click');
    });
    $this.hover(function() {
    clearTimeout(closectip);

    }, function() {
    closectip = setTimeout(cluetipClose, 1000);
    });
} 

这应该在鼠标移出一秒钟后隐藏线索提示。这在我第一次查看线索提示并将鼠标移出时有效 - 但是当我随后查看线索提示时,即使没有鼠标移出,它也会在 1 秒后隐藏提示。调试发现以下代码运行不正常:

$this.hover(function() {
    clearTimeout(closectip);
}

这应该确保当我们再次将鼠标悬停在线索提示元素上时清除超时,以便它不会在一秒钟后被隐藏。但是,当执行悬停功能时,“closectip”超时变量是未定义的。

如何将closectip 超时变量设为全局变量,以便我可以从悬停事件中访问和清除它?

【问题讨论】:

    标签: jquery timeout global-variables


    【解决方案1】:

    这里是对 javascript 全局变量的描述...

    http://snook.ca/archives/javascript/global_variable

    您需要做的就是摆脱变量声明,在所有函数之外声明它,或者声明(并将其称为)window.closectip

    【讨论】:

    • 谢谢!做到了。我最终用$this.mouseleave(function() { cluetipClose(); }); 替换了整个代码,但这是一个提示错误,你的答案是正确的......
    猜你喜欢
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2016-04-30
    相关资源
    最近更新 更多