2010-12-31 17 views
0

だから、私はそれが唯一の要素 (およびofcourseのCSS)の後にクラス=「ツールチップ」と権利を持っている要素を必要とし、jQueryの中で書かれた汚れシンプルなツールチップを持って Googleマップ内でカスタム関数を呼び出す?

しかし、どのように私はそれを実装しますGoogleマップのポリラインで

function tooltipDisplay() { 
    return function() { $(this).contents("span:last-child").css({ display: "block" }); } 
} 
function tooltipHide() { 
    return function() { $(this).contents("span:last-child").css({ display: "none" }); } 
} 
function tooltipMove() { 
    return function(e) { 
     var mousex = e.pageX + 10; 
     var mousey = e.pageY + 5; 
     $(this).contents("span:last-child").css({ top: mousey, left: mousex }); 
    } 
} 
$(".tooltips").hover(tooltipDisplay(),tooltipHide()); 

    $(".tooltips").mousemove(tooltipMove()); 

Iは結果なし

google.maps.event.addListener(flightPath, 'mouseover', tooltipDisplay()); 

    google.maps.event.addListener(flightPath, 'mouseout', tooltipHide()); 

    google.maps.event.addListener(flightPath, 'mousemove', tooltipMove()); 

を使用してみました。

答えて

0

右:呼び出し時にtooltipDisplay() ...全体的にこのように、それを呼び出した結果、直接機能を使用しません。溶解した。

フープやその他のものを飛び越えていくと、見た目よりも簡単になりました。

簡単に言えば、「this」はドキュメントであるため、Googleマップポリラインでは便利ではありません。そのように私はノッチをそれを取り、それがそのように独自の単純な関数を与えた:私もそれが持っていたとしてリスナーでマウスオーバーで行うことができなかったツールチップを配置する行為に気づいしかし

google.maps.event.addListener(flightPath, 'mouseover', function() { 
     $('#mapTooltip').show(); 
    }); 

    google.maps.event.addListener(flightPath, 'mouseout', function() { 
     $('#mapTooltip').hide(); 
    }); 

私はどこにでも移動するたびに、それはのような、発射されたループが生じとにかく要素を呼び出して、document.readyエリアに私はこれを追加しました:

function tooltipMove(e) { 
    var y = e.pageY; 
    var x = e.pageX; 

    $("span").css({ 
     top:y+5, 
     left:x+10 
    }); 
} 

$("#gMap").mousemove(tooltipMove); 

をそしてちょうど収まるようにCSSをスタイル。 それでは簡単!

1

(このWikiも同様ですが)このような関数ラッパーは必要ありません。代わりにtooltipDisplayの代わりにtooltipDisplayを使用してください。

function tooltipDisplay() { 
    $(this).contents("span:last-child").css({ display: "block" }); 
} 
function tooltipHide() { 
    $(this).contents("span:last-child").css({ display: "none" }); 
} 
function tooltipMove(e) { 
    var mousex = e.pageX + 10; 
    var mousey = e.pageY + 5; 
    $(this).contents("span:last-child").css({ top: mousey, left: mousex }); 
} 
$(".tooltips").hover(tooltipDisplay,tooltipHide).mousemove(tooltipMove); 
+0

無関係ですが高く評価されています。 :)(今後の比較のために未編集のまま私の投稿を残してください) – Mantar

+0

それはまだ無関係ですが、2つの違いとあなたの変更の利点を簡単に説明できますか? – Mantar

+0

@Meke - 基本的には、それぞれからレイヤーを削除しています。 '()'を呼び出すと、パラメータを指定せずに関数を実行しています*、イベントが実行されたときではなく、...イベントが発生したときに実行される機能...多くの場合、基本的にこれは必要ありません(特定の閉鎖などが必要な場合を除きます)。余分なレイヤーを削除するだけで、イベント*時に実行される*関数を定義し、イベントハンドラを割り当てるときにその関数を直接使用します。 –

関連する問題