0

詳細なツールチップを表示するためにjqueryのcluetipプラグインを使用しています。次の質問で説明されている問題があり、受け入れられた回答のアドバイスに従いました。

マウスがリンクから離れたときにヒントを閉じる

これは私が使用しているコードです:

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);
}

これは、cluetip 要素に再びカーソルを合わせたときにタイムアウトが確実にクリアされるようにするためのものであり、1 秒後に非表示になることはありません。ただし、ホバー機能が実行されると、「closectip」タイムアウト変数は未定義です。

closectipホバーイベントからアクセスしてクリアできるように、タイムアウト変数をグローバルにするにはどうすればよいですか?

4

1 に答える 1

2

ここでは JavaScript のグローバル変数について説明します...

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

必要なのは、変数宣言を取り除くか、すべての関数の外側で宣言するか、宣言する (そしてそれを参照する) ことだけです。window.closectip

于 2012-10-18T10:16:16.427 に答える