2012-03-14 9 views
0

対象:オブジェクトのユーザーは、二次DOMに
ツールチップ育てる上にマウスを移動します:およそ10-15px 目標の下に位置固定DOMオブジェクトをホバー

jquery 「ツールチップ」プラグインを作成しました。このプラグインを使用すると、ユーザーはのDOMオブジェクト上でに移動し、は「ツールチップ」と表示されます。ユーザーがに移動すると、マウスがターゲットからツールチップに移動して消えなくなります。 2番目のマウスがターゲットから離れます。

私はこれを試してみました:

var hoverTimeout; 

       data.target.hover(function(){ 
        $this.tooltip('show'); 
       }, function(){ 

        hoverTimeout = setTimeout(function(){ 
         $this.tooltip('hide'); 
         console.log('hey'); 
        }, 1000); 

       }); 

       data.tooltip.hover(function(){ 
        data.tooltip('show'); 
        clearTimeout(hoverTimeout); 
       }, function(){ 
        data.tooltip('hide'); 
       }); 

しかし、これは隠れてからツールチップを停止するようです。私がこれをやりたいのは、フォームを使うことができる、テキストをツールチップにコピーすることなどです。

私はhoverintentプラグインを使いたくないので、setTimeoutとclearTimeoutのようなものがうまくいくと思っています。

ありがとうございました!

+0

var hoverTimeout; data.target.hover(関数(){ \t $ this.tooltip( 'ショー'); \tてclearTimeout(hoverTimeout); }、関数(){ \t hoverTimeout = setTimeoutメソッド(関数(){ \t \t $ this.tooltip( 'hide'); \t}; 1000); }); data.tooltip.hover(関数(){ \t $ this.tooltip( 'ショー'); \tてclearTimeout(hoverTimeout); }、関数(){ \t hoverTimeout = setTimeoutメソッド(関数(){ \t \t $ this.tooltip( 'hide'); \t}; }); – iRedMedia

答えて

2

あなたはタイマー両方の方法を使用する必要があります

var hoverTimeout; 

data.target.hover(function() 
{ 
    hoverTimeout && clearTimeout(hoverTimeout); 
    $(this).tooltip('show'); 
}, 
function() 
{ 
    var $this = $(this); 
    hoverTimeout = setTimeout(function(){ 
     $this.tooltip('hide'); 
    }, 1000); 

}); 

data.tooltip.hover(function() 
{ 
    hoverTimeout && clearTimeout(hoverTimeout); 
}, 
function() 
{ 
    var $this = $(this); 
    hoverTimeout = setTimeout(function(){ 
     $this.tooltip('hide'); 
    }, 1000); 
}); 

をあなた、combine the twoおそらくべきあなたはとにかくそれらの両方にまったく同じことをやっているのは:

var hoverTimeout; 

data.target.add(data.tooltip).hover(function() 
{ 
    hoverTimeout && clearTimeout(hoverTimeout); 
    $(this).tooltip('show'); 
}, 
function() 
{ 
    var $this = $(this); 
    hoverTimeout = setTimeout(function(){ 
     $this.tooltip('hide'); 
    }, 1000); 

}); 
+0

おそらく、ユーザーがツールチップにすばやくマウスオーバーできない場合は、タイムアウトを1秒以上に設定することもできます。 – huzzah

+0

ありがとうございます。そしてそれはオブジェクトに非常に近いです。彼らが1秒以上かかる場合、私のアプリを使用すべきではありません;)ちょっと冗談です:)。しかし、1秒で十分です。なぜ私はあなたがこれを再定義しているのかわからない、それはエラーを引き起こした。私は自分のコードが90%正しいことも発見しました。コードのどこかに.hide()がありませんでした。それが消えない理由です。どうもありがとうございました! – iRedMedia

+0

この部分について説明できますか? hoverTimeout && clearTimeout(hoverTimeout); – iRedMedia

0
var hoverTimeout; 

data.target.hover(function() 
{ 
    $this.tooltip('show'); 
    clearTimeout(hoverTimeout); 
}, function() 
{ 
    hoverTimeout = setTimeout(function(){ 
     $this.tooltip('hide'); 
    }, settings.delay); 
}); 

data.tooltip.hover(function() 
{ 

    clearTimeout(hoverTimeout); 
}, function() 
{ 
    hoverTimeout = setTimeout(function(){ 
     $this.tooltip('hide'); 
    }, settings.delay); 
});